case when 的语法结构:
CASE WHEN Condition THEN result
[ WHEN Condition THEN result ]
THEN result #其他的
END #结束
表数据如下:
看看俩个sql 语句和其相应的结果:
SUM:
SELECT SUM(case WHEN age < 20 THEN 1 ELSE 0 END ) AS mini, SUM(case WHEN age > 20 AND age < 60 THEN 1 ELSE 0 END) AS high FROM person
查询结果为:
COUNT:
SELECT COUNT(case WHEN age < 20 THEN 1 ELSE 0 END ) AS mini, COUNT(case WHEN age > 20 AND age < 60 THEN 1 ELSE 0 END) AS high FROM person
查询结果为:
这俩条 sql 语句 case when 的意思是
对满足年龄 < 20 条件的返回 1,否则返回 0; 对满足年龄 > 20 且 < 60的返回 1,否则返回 0。
但结果却不一致。
SUM 是对结果集的相加求和;
COUNT 是对结果集的统计数目。
所以 SUM 的值是 1,2; 而 COUNT 的值都是 4,即所有记录。