您的位置:首页 > 数据库

根据年龄分割查询每个年龄段的人数

2016-07-25 11:38 561 查看

根据年龄分割查询每个年龄段的人数

本文以两种查询方式,查询每个年龄段的人数。

1.普通的when case 查询

select age, count(*) as num from (
SELECT
case
when age >= 18 and age <= 20 then '1'
when age >= 21 and age <= 25 then '2'
when age >= 26 and age <= 30 then '3'
when age >= 31 and age <= 35 then '4'
when age >= 36 and age <= 40 then '5'
when age is NULL or age < 18 then '0'
WHEN age > 40 then '6'
end
as age from t_yuefu_v4_user WHERE recordStatus >= 0) a
WHERE 1=1
group by age


查询的意思也跟SQL一样,简单易懂。

2.ELT(INTERVAL())查询方式查询

select ifnull(elt(INTERVAL(age, 18,21,26,31,36,40)+1, '<18','18~20','21~25','26~30','31~35','36~40','>=40'),'未输入') as ageRange,
count(INTERVAL(age, 18,21,25,30,35,40)) as count
from t_yuefu_v4_user
where recordStatus >= 0 group by ageRange;


这种查询方式利用到两个函数,函数的详细解释在Mysql的官方文档可以看到。

ELT方法的官方解释如下:—— [ ELT Function ]

ELT(N,str1,str2,str3,...)

ELT() returns the Nth element of the list of strings: str1 if N = 1, str2 if N = 2, and so on. Returns NULL if N is less than 1 or greater than the number of arguments. ELT() is the complement of FIELD().

mysql> SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo');
-> 'ej'
mysql> SELECT ELT(4, 'ej', 'Heja', 'hej', 'foo');
-> 'foo'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SQL 分段查询 数据库