Mysql的分段函数INTERVAL()和分值函数ELT()

一,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

 

本文完

 

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值