mysql elt interval函數區間統計

引言

  在實際的業務統計需求中 有時往往需要對區間進行分組統計查詢,如分數區間,工資區間查詢統計等!mysql中可以利用elt函數來實現此類需求!
接下來看如下時間業務需求:
1:現在要進行統計,小於100的,100~500的,500~1000的,1000以上的,這各個區間的id數
mysql> select * from k1;
+------+------+
| id   |  yb  |
+------+------+
|    1 |  100 |
|    2 |   11 |
|    3 |    5 |
|    4 |  501 |
|    5 | 1501 |
|    6 |    1 |
+------+------+
 
現在要進行統計,小於100的,100~500的,500~1000的,1000以上的,這各個區間的id數
 
利用interval劃出4個區間
 
再利用elt函數將4個區間分別返回一個列名
 
mysql> select elt(interval(d.yb,0, 100, 500, 1000), '0-100', '100-500', '500-1000', '1000-...') as yb_level, count(d.id) as cnt
    -> from k1 d   
    -> group by yb_level;
+-----------+-----+
| yb_level  | cnt |
+-----------+-----+
| 100-500   |   1 |
| 500-1000  |   1 |
| 0-100     |   3 |
| 1000-...  |   1 |
+-----------+-----+
4 rows in set (0.00 sec)
 ELT函數:

格式:ELT(N,str1,str2,str3,...)
ELT函數用於返回在參數列表中指定的索引號處的字符串。
如果N= 1,返回str1,如果N= 2,返回str2,等等。如果N小於1或大於參數個數,返回NULL。ELT()是FIELD()反運算。
mysql> select ELT(1, 'ej', 'Heja', 'hej', 'foo');
    -> 'ej'
mysql> select ELT(4, 'ej', 'Heja', 'hej', 'foo');
    -> 'foo'

  Interval函數:
格式:INTERVAL(N,N1,N2,N3,...)
Interval函數用於返回N 值再區間段所在的索引位置,位置從0開始
如果N <N1,返回0, 如果 N1<= N < N2,則返回1,以此類推 
mysql> SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200); (23小於30,30的位置是4,於是返回3)
       -> 3
mysql> SELECT INTERVAL(10, 1, 10, 100, 1000); (10 大於10,小於100,於是返回2)
       -> 2
mysql> SELECT INTERVAL(22, 23, 30, 44, 200);  (22小於23,23的位置是1,於是返回0)
       -> 0
有了ELT和 Interval函數後,我們的區間統計就方便多了,避免的重複繁瑣的Switch...Case...多重判斷了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章