一,INTERVAL()函数
INTERVAL()函数可以返回分段后的结果,语法如下:
INTERVAL(N,N1,N2,N3,..........)
其中,N是要判断的数值,N1,N2,N3,...是分段的间隔。
这个函数的返回值是段的位置:
如果N<N1,则返回0,
如果N1<=N<N2,则返回1,
如果N2<=N<N3,则返回2。
所以,区间是前闭后开的。
举个例子:
有这样的数据:
然后执行以下sql:
SELECT id,percent,INTERVAL(percent,25,50) from test;
执行结果如下:
意思大概是这样的:percent字段参与判断,设定的区段是25,50,那么小于25的值返回0,大于等于25小于50的值返回1,大于等于50的值返回2。
还可以把INTERVAL()函数用在GROUP BY中:
执行这样的sql:
SELECT
INTERVAL (percent, 0, 26, 51),
COUNT(1)
FROM
test
GROUP BY
INTERVAL (percent, 0, 26, 51);
执行结果如下:
图6
二,ELT()函数
ELT()函数是分值函数,功能有点类似很多编程语言中的switch关键字。
语法:
ELT(N,str1,str2,str3,...)
其中N是要判断的数值,如果N=1,则返回str1,如果N=2,则返回str2,以此类推。
另外对不上的值返回Null,比如N=0,或者N大于后面列表的长度。
str1也可以是数字格式。
举个例子:
有这样的数据:
然后执行以下sql:
SELECT id,percent,ELT(id,'id is 1','id is 2') from test;
执行结果如下:
意思大概是这样的:id字段参与判断,id=1时返回'id is 1',id=2时返回'id is 2',id是其他值时返回null。
三,INTERVAL()函数和ELT()函数合用
因为两个函数都是按照整数位置运作的,所以二者可以合用。
比如有这样的数据:
执行sql:
SELECT id,percent,ELT(INTERVAL(percent,0,26,51),'0-25','26-50','>50') result from test;
执行结果:
图5
本文完