用sql语句实现年龄分段统计

SELECT
    CASE
WHEN (age >= 10 AND age <= 20) THEN '10-20' WHEN (age >= 21 AND age <= 30) THEN '21-30' ELSE '30-' END 'eag_layer', count(*) emps FROM address_book GROUP BY CASE WHEN (age >= 10 AND age <= 20) THEN '10-20' WHEN (age >= 21 AND age <= 30) THEN '21-30' ELSE '30-' END ORDER BY 1;

 

SELECT '10-20' 年龄段, COUNT(*) 人数
FROM [Table] WHERE [年龄] BETWEEN 10 AND 20 UNION ALL SELECT '21-30' 年龄段, COUNT(*) 人数 FROM [Table] WHERE [年龄] BETWEEN 21 AND 30 UNION ALL SELECT '31' 年龄段, COUNT(*) 人数 FROM [Table] WHERE [年龄] > 30 

 

select case when [年龄] BETWEEN 10 AND 20 then '10-20' when [年龄] BETWEEN 20 AND 30 then '20-30' when [年龄] > 30 then '30以上' end as '年龄段', count(*) as '人数' FROM [Table] 

 

先将年龄除10取整

select floor(年龄/10) as age from 表
  • 1

再根据年龄整数分组统计

select age ,count(age) from
(
select floor(年龄/10) as age from 表 ) group by age

 

这样基本效果就出来了,达到楼主的要求就要加如函数计算了

sql语法

select convert(varchar,age*10)+'--'+convert(varchar,(age+1)*10) ,count(age) from ( select floor(年龄/10) as age from 表 ) group by age

 

oracle语法

select age*10 || '--'|| (age+1)*10 ,count(age) from ( select floor(年龄/10) as age from 表 ) group by age
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值