您的位置:首页 > 数据库

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

2015-11-06 15:10 447 查看
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 WHERE [年龄] BETWEEN 10 AND 20
UNION ALL
SELECT '21-30' 年龄段, COUNT(*) 人数
FROM 
WHERE [年龄] BETWEEN 21 AND 30 UNION ALL SELECT '31' 年龄段, COUNT(*) 人数 FROM
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 


先将年龄除10取整

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


再根据年龄整数分组统计

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql