我有以下查询:
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
上面的查询给了我这样的结果:
我想在此处添加另一列“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/