一尘不染

SQL-计算具有特定值的行

sql

我有一张看起来像这样的表:

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;

但是我从这里有点迷失了。在没有大量声明的情况下如何实现这一目标的任何指示?


阅读 118

收藏
2021-03-17

共1个答案

一尘不染

使用MySQL,您可以使用SUM(condition)

SELECT   id, SUM(value=0) AS n0, SUM(value=1) AS n1, COUNT(*) AS total
FROM     mytable
GROUP BY id

sqlfiddle上看到它。

2021-03-17