1. 程式人生 > >MySQL 使用 INTERVAL() 函式 實現資料按區間分組

MySQL 使用 INTERVAL() 函式 實現資料按區間分組

首先看一下它的定義:

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 根據速度區間分組,再對不同區間出現的次數求和