首先看一下它的定義:
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個速度區間的個數
-
select
INTERVAL(speed,
1000,
2000,
4000,
8000)
as i_s,
sum(
count)
-
from a_speed_table
-
group
by i_s
上面的 sql 根據速度區間分組,再對不同區間出現的次數求和
原文地址:https://www.cnblogs.com/yangchunze/p/6667502.html