数据库分段分类统计
分段分类统计,首先分类的话需要用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的外面,统计每一种情况的总和:
1 2 3 4 5 6 7 8 9 | 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 信息表 |
这样就是我们需要的结果了。