查询问题!年龄段查询!!!!!!!!!!!!!!!!!!
有一张表,里面有一个字段是表示的年龄,是数值型的
现在需要统计
0-20,21-40,41-60,61-70,70以上的记录数
统计结果如下:
0-20 5
21-40 1
41-60 11
....
70以上 4
怎样实现?求问大侠
------解决方案--------------------Select '0-20 ' As 年龄段, Count(*) As 记录数 From 表 Where 年龄 Between 0 And 20
Union
Select '21-40 ' As 年龄段, Count(*) As 记录数 From 表 Where 年龄 Between 21 And 40
Union
Select '41-60 ' As 年龄段, Count(*) As 记录数 From 表 Where 年龄 Between 41 And 60
Union
Select '61-70 ' As 年龄段, Count(*) As 记录数 From 表 Where 年龄 Between 61 And 70
Union
Select '70以上 ' As 年龄段, Count(*) As 记录数 From 表 Where 年龄 > 70
------解决方案--------------------这样行吗?
select 年龄段,Count(年龄段) as 记录数
from
(
select (case when 年龄 > =0 and 年龄 <=20 then '0-20 ' when 年龄 > =21 and 年龄 <=40 then '41-40 '
when 年龄 > =41 and 年龄 <=60 then '41-60 ' when 年龄 > =61 and 年龄 <=70 then '61-70 ' when 年龄 > =71 then '70以上 ' end )as 年龄段
from 表
)a
group by 年龄段
------解决方案--------------------如果年龄是整数最小年龄为1
select case when (年龄-1)/10=6 then '61-70 ' when (年龄-1)/10> 6 then '70以上 ' else rtrim(((年龄-1)/20)*20+1)+ '- '+rtrim(((年龄-1)/20+1)*20) end,count(*) from 年龄表
group by case when (年龄-1)/10=6 then '61-70 ' when (年龄-1)/10> 6 then '70以上 ' else rtrim(((年龄-1)/20)*20+1)+ '- '+rtrim(((年龄-1)/20+1)*20) end