全国各省市不同年龄段人数统计sql

根据人员信息表中的年龄和地址统计出各省市不同年龄段的人数

人员信息表中年龄字段是String型,年龄不全为整数(有3.5岁这样的)

将String型转化为浮点型:CAST(age as FLOAT)

年龄字段中有空值和 ' ',要排除:where mp.age is not null and mp.age !=''

将地址与省市名用like做模糊查询

两表中不同字段模糊查询:mp.addr like '%'||p.name||'%'

剩下就是一些count,sum,group by ,order by的组合了

SQL语句如下:

select a.name,a.age_group,sum(a.count) from
(select p.name ,
case
when CAST(age as FLOAT)>=0.0 and CAST(age as FLOAT)<1.0 then 'age_0_1_no'
when CAST(age as FLOAT)>=1.0 and CAST(age as FLOAT)<3.0 then 'age_1_3_no'
when CAST(age as FLOAT)>=3.0 and CAST(age as FLOAT)<6.0 then 'age_3_6_no'
when CAST(age as FLOAT)>=6.0 and CAST(age as FLOAT)<12.0 then 'age_6_12_no'
when CAST(age as FLOAT)>=12.0 and CAST(age as FLOAT)<18.0 then 'age_12_18_no'
else 'age_18_1000' end
age_group, count(*) from Person mp,province p
where mp.age is not null and mp.age !='' and mp.addr like '%'||p.name||'%' 
group by mp.age,p.name order by p.name) a
GROUP BY a.name,a.age_group order by a.name

查询结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值