数据库
首页 > 数据库> > 数据库分段分类统计

数据库分段分类统计

作者:互联网

分段分类统计,首先分类的话需要用case when 它的用法请大家去看看教程。
但是case when 只能统计单个数据。比如下面的例子。

有一个名为"信息表"中有"出生日期"的日期字段,按每10岁分段统计人数SQL如何写?
求年龄段 1-10 11-20 21-30 31- 40 41-50 51-60 61-70人数和?

用case when 的话。把sum放在 case when里面能够统计一个人在哪一个年龄阶段。
当第一个数据统计后就统计全部人数和了。
但是我要统计所有在这个年龄阶段的人数和。那么需要把sum放在case when的外面,统计每一种情况的总和:

SELECT  
SUM(CASE WHEN datediff(year, 出生日期, getdate()) BETWEEN 1 AND 10 THEN 1 ELSE 0 END) AS '1-10',
SUM(CASE WHEN datediff(year, 出生日期, getdate()) BETWEEN 11 AND 20 THEN 1 ELSE 0 END) AS '11-20', 
SUM(CASE WHEN datediff(year, 出生日期, getdate()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END) AS '21-30', 
SUM(CASE WHEN datediff(year, 出生日期, getdate()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END) AS '31-40', 
SUM(CASE WHEN datediff(year, 出生日期, getdate()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END) AS '41-50', 
SUM(CASE WHEN datediff(year, 出生日期, getdate()) BETWEEN 51 AND 60 THEN 1 ELSE 0 END) AS '51-60', 
SUM(CASE WHEN datediff(year, 出生日期, getdate()) BETWEEN 61 AND 70 THEN 1 ELSE 0 END) AS '61-70' 
FROM 信息表 

这样就是我们需要的结果了。

标签:CASE,BETWEEN,分段,数据库,分类,WHEN,year,出生日期,SUM
来源: https://blog.csdn.net/mingkai925/article/details/118707733