我有一个表格,看起来有点像这样:
id value
1 0
1 1
1 2
1 0
1 1
2 2
2 1
2 1
2 0
3 0
3 2
3 0
现在,针对每个id
,我想要计算0和1的出现次数以及该ID的出现次数(该值可以是任意整数),因此最终结果应该类似于这样:
id n0 n1 total
1 2 2 5
2 1 2 4
3 2 0 3
我用这个语句获取了第一行和最后一行:
SELECT id, COUNT(*) FROM mytable GROUP BY id;
但我有些迷茫。你有什么指导,如何在不使用大量语句的情况下实现这一点?
SUM(condition)
这个函数! - ryystSUM
操作可以提供满足条件的记录计数。 - eggyalCOUNT(CASE WHEN value=0 THEN 1 END) AS n0, ..., ...
,这样在所有其他主要的DBMS中都可以工作,因为MySQL是唯一会进行隐式布尔转换的DBMS。请参阅我在 此处的问题 以获取更多信息。 - Zane Bien