a |
1 |
2 |
3 |
1 |
1 |
1 |
2 |
3 |
3 |
数据库中表结构如上图表所示,表名为test,仅有1列,列名为a。执行如下sql语句:
SELECT
COUNT(CASE WHEN a = 1 THEN 1 ELSE 0 END) AS oneNum,
COUNT(CASE WHEN a = 2 THEN 1 ELSE 0 END) AS twoNum,
COUNT(CASE WHEN a = 3 THEN 1 ELSE 0 END) AS threeNum
FROM
test;
希望得到的结果是,分别统计出a=1,a=2,a=3的个数,但得到的3个结果一直是9个,待解决。
经大佬提醒,sql语句改为如下:
SELECT
COUNT(CASE WHEN a = 1 THEN 1 ELSE NULL END) AS oneNum,
COUNT(CASE WHEN a = 2 THEN 1 ELSE NULL END) AS twoNum,
COUNT(CASE WHEN a = 3 THEN 1 ELSE NULL END) AS threeNum
FROM
test;
即可得到预期的结果: