SELECT elt(
INTERVAL(age, 18, 24, 29, 34, 39, 44, 49, 100),
'18-23', '24-28', '29-34', '33-39', '43-49', '48-100','未知') as '年龄区间',
count(*) as '总人数'
FROM user
GROUP BY elt(
INTERVAL(age, 18, 24, 29, 34, 39, 44, 49, 100),
'18-24', '24-29', '29-34', '34-39', '44-49', '49-100')
1、ELT(N,str1,str2,str3,...)
看以下示例
select elt(4,'mysql','java','redis','mq','fun')
-- 输出 mq
select elt(1,'mysql','java','redis','mq','fun')
-- 输出 mysql
select elt(6,'mysql','java','redis','mq','fun')
-- 输出 null
参数
N:它是一个整数,是要检索的字符串的索引。
字符串1,字符串2,字符串3:我们要从中检索的字符串列表。
返回
它在指定的索引处返回一个字符串。如果指定的索引N处没有字符串,则返回NULL。
2、INTERVAL(N,N1,N2,N3,...)
N 是要判断的数值 N1,N2,N3,....是分段的间隔
例: INTERVAL(age, 18, 24, 29, 34, 39, 44, 49, 100)
如果 N<N1 返回0,
N1<=N<N2 返回1 ,
如果N2<=N<N3 返回2
看以下实例
select age,INTERVAL(age,18,24) form user;
-- 输出
-- age INTERVAL(age,18,24)
-- 17 0
-- 16 0
-- 19 1
-- 21 1
-- 25 2
select
INTERVAL(age,18,24),
count(1)
from
user
group by
INTERVAL(age,18,24)
数据
id age
1 13
2 17
3 19
4 24
5 21
6 50
7 51
输出
INTERVAL(age,18,24) count(1)
0 2
1 2
2 3