我有一个问题可以用一个简单的虚构表格来解释。
“饮料”表只有三个字段:
- Id (1..N) - 主键
- Date ('2012-09-19'...) - 每个日期都可以经常出现
- 热门(1 表示是,0 表示否)。
我想生成这样的列表:
Date Total Hot Cold
2012-09-19 14 6 8
2012-09-10 21 18 3
等等
字段“冷”如您所料计算为(总计 - 热)。
到目前为止我得到的是:
SELECT Date, count(*) AS Total FROM Drinks GROUP BY Date;
这给了我想要的表格,但当然没有“热”和“冷”列。
有没有办法修改我的查询,以便我可以一次生成此表?我当然可以使用 PHP 代码分阶段构建表格,但这可能不是优雅的方式,也不是最快的方式。
我很高兴观看和学习...:)
最佳答案
您可以在 SELECT
子句中添加 CASE
语句。
SELECT Date,
count(*) AS Total,
SUM(CASE WHEN Hot = 1 THEN 1 ELSE 0 END) totlHOT,
SUM(CASE WHEN Hot = 0 THEN 1 ELSE 0 END) totalCold
FROM Drinks
GROUP BY Date;
关于mysql - 通过在一个简单的表上使用 MySql 进行三次计数和分组......是否可以在一个查询中进行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12497714/