首先看一下它的定义:

INTERVAL(N,N1,N2,N3,..........)

INTERVAL()函数进行比较列表(N1,N2,N3等等)中的N值。该函数如果N<N1返回0,如果N<N2返回1,如果N<N3返回2 等等。如果N为NULL,它将返回-1。列表值必须是N1<N2<N3的形式才能正常工作。

下面的代码是显示 INTERVAL()函数如何工作的一个简单的例子:

mysql>SELECT INTERVAL(6,1,2,3,4,5,6,7,8,9,10); 
+---------------------------------------------------------+ 
| INTERVAL(6,1,2,3,4,5,6,7,8,9,10)                        | 
+---------------------------------------------------------+ 
| 6                                                       | 
+---------------------------------------------------------+ 
1 row in set (0.00 sec) 

结果中,6是从零开始的索引,列表第一个值的值大于N. 在我们的例子中,6 属于 [6,7) ,所以返回第6个索引

(另 INTERVAL 还是日期计算的关键字)


-------------------------------------------- 定义结束分割线 --------------------------------------------


好,下面看一个使用 INTERVAL 实现数据分组的示例

假设有一个下载速度表(有 speed 和 count 两个字段),

然后统计1M,2M,4M,8M,8M以上这个5个速度区间的个数


   
  1. select INTERVAL(speed, 1000, 2000, 4000, 8000) as i_s, sum( count)
  2. from a_speed_table
  3. group by i_s

上面的 sql 根据速度区间分组,再对不同区间出现的次数求和

原文地址:https://www.cnblogs.com/yangchunze/p/6667502.html

发布评论
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

MySQL5.7默认打开ONLY_FULL_GROUP_BY模式问题与解决方案知识解答
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。