mysql - SELECT SQL 查询 (MySQL) 中的计算列

标签 mysql sql

我有以下查询:

SELECT
a.source,
TotalCount,
ActiveCount
FROM
(
    SELECT COUNT(*) AS TotalCount, a.source
    FROM internship a
    GROUP BY a.source
) AS A
join
(
    SELECT COUNT(*) AS ActiveCount, b.source
    FROM internship b
    WHERE b.int_lastdate > CURDATE() AND b.status LIKE 'Published'
    GROUP BY b.source
) AS B
    ON A.source = B.source

上面的查询给了我这样的结果:

enter image description here

我想在此处添加另一列“ExpiredCount = TotalCount - ActiveCount

我怎样才能做到这一点?

最佳答案

Gordon 的回答可能是我作为 DBA 继承别人代码所希望看到的。但我们实际上完全可以避免使用子查询,只需编写以下内容:

SELECT
    source,
    COUNT(*) AS TotalCount,
    SUM(CASE WHEN int_lastdate > CURDATE() AND status LIKE 'Published'
             THEN 1 ELSE 0 END) AS ActiveCount,
    COUNT(*) - SUM(CASE WHEN int_lastdate > CURDATE() AND status LIKE 'Published'
                        THEN 1 ELSE 0 END) AS ExpiredCount
FROM internship
GROUP BY source

关于mysql - SELECT SQL 查询 (MySQL) 中的计算列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45127913/

相关文章:

php - 在 mysql 表中插入 html 表值

SQL Server 将十进制解析为 DateTime

c# - 加载数据内文件 : can't ignore 1st row while skipping columns?

java - 使用 JDBC 运行查询

mysql - 如何从远程文件加载 FILE

php - MySQL/PHP 计算非 NULL 的列数?

MySQL 错误代码 1005 errno -1

c++ - 从 c/c++ 中的字符串中去除无效的 utf8

mysql - 如何找到最常见和最不常见的数字

mysql - SQL:最大发生次数语句上的内连接