Sql根据不同条件统计总数
程序员文章站
2024-03-12 20:32:20
...
前言
经常会遇到根据不同的条件统计总数的问题,一般有两种写法:count和sum都可以
数据准备:
方法一 :Count
代码:
SELECT
COUNT(
CASE
WHEN age > 20
AND age < 25 THEN
1
ELSE
NULL
END
) AS cnt0,
COUNT(
CASE
WHEN age >= 25
AND age < 30 THEN
1
ELSE
NULL
END
) AS cnt1
FROM
USER;
结果:
方法二:sum
代码:
SELECT
SUM(
CASE
WHEN age > 20
AND age < 25 THEN
1
ELSE
0
END
) AS cnt0,
SUM(
CASE
WHEN age >= 25
AND age < 30 THEN
1
ELSE
0
END
) AS cnt1
FROM
USER;
结果:
当然也可以和count代码一样ELSE后面也写为NULL
SELECT
SUM(
CASE
WHEN age > 20
AND age < 25 THEN
1
ELSE
NULL
END
) AS cnt0,
SUM(
CASE
WHEN age >= 25
AND age < 30 THEN
1
ELSE
NULL
END
) AS cnt1
FROM
USER;
后记
其实原理很简单,count统计的时候有满足条件的就加1,没有满足的变为NULL,我们知道聚合函数统计的时候是忽略null值的;而sum原理和coun相似,不过ELSE后面可以是0或者NULL。
上一篇: oracle 复制列值、置空列值