前言
经常会遇到根据不同的条件统计总数的问题,一般有两种写法:count和sum都可以
数据准备:

方法一 :Count
代码:
SELECTCOUNT(CASEWHEN age > 20AND age < 25 THEN1ELSENULLEND) AS cnt0,COUNT(CASEWHEN age >= 25AND age < 30 THEN1ELSENULLEND) AS cnt1
FROMUSER;
结果:

方法二:sum
代码:
SELECTSUM(CASEWHEN age > 20AND age < 25 THEN1ELSE0END) AS cnt0,SUM(CASEWHEN age >= 25AND age < 30 THEN1ELSE0END) AS cnt1
FROMUSER;
结果:

当然也可以和count代码一样ELSE后面也写为NULL
SELECTSUM(CASEWHEN age > 20AND age < 25 THEN1ELSENULLEND) AS cnt0,SUM(CASEWHEN age >= 25AND age < 30 THEN1ELSENULLEND) AS cnt1
FROMUSER;
后记
其实原理很简单,count统计的时候有满足条件的就加1,没有满足的变为NULL,我们知道聚合函数统计的时候是忽略null值的;而sum原理和coun相似,不过ELSE后面可以是0或者NULL。


















