翼度科技»论坛 编程开发 mysql 查看内容

mysql elt interval函数区间统计

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
引言
  1.  在实际的业务统计需求中 有时往往需要对区间进行分组统计查询,如分数区间,工资区间查询统计等!mysql中可以利用elt函数来实现此类需求!<br>   接下来看如下时间业务需求:<br>   1:现在要进行统计,小于100的,100~500的,500~1000的,1000以上的,这各个区间的id数
复制代码
  1. mysql> select * from k1;
  2. +------+------+
  3. | id   |  yb  |
  4. +------+------+
  5. |    1 |  100 |
  6. |    2 |   11 |
  7. |    3 |    5 |
  8. |    4 |  501 |
  9. |    5 | 1501 |
  10. |    6 |    1 |
  11. +------+------+
  12. 现在要进行统计,小于100的,100~500的,500~1000的,1000以上的,这各个区间的id数
  13. 利用interval划出4个区间
  14. 再利用elt函数将4个区间分别返回一个列名
  15. 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
  16.     -> from k1 d   
  17.     -> group by yb_level;
  18. +-----------+-----+
  19. | yb_level  | cnt |
  20. +-----------+-----+
  21. | 100-500   |   1 |
  22. | 500-1000  |   1 |
  23. | 0-100     |   3 |
  24. | 1000-...  |   1 |
  25. +-----------+-----+
  26. 4 rows in set (0.00 sec)
复制代码
  1. 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'
  1.   Interval函数:
复制代码
  1. 格式:INTERVAL(N,N1,N2,N3,...)
  2. Interval函数用于返回N 值再区间段所在的索引位置,位置从0开始
  3. 如果N <N1,返回0, 如果 N1<= N < N2,则返回1,以此类推
  4. mysql> SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200); (23小于30,30的位置是4,于是返回3)
  5.        -> 3
  6. mysql> SELECT INTERVAL(10, 1, 10, 100, 1000); (10 大于10,小于100,于是返回2)
  7.        -> 2
  8. mysql> SELECT INTERVAL(22, 23, 30, 44, 200);  (22小于23,23的位置是1,于是返回0)
  9.        -> 0
复制代码
  1. 有了ELT和 Interval函数后,我们的区间统计就方便多了,避免的重复繁琐的Switch...Case...多重判断了
复制代码
来源:https://www.cnblogs.com/zhaosq/p/17192256.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具