------------
time 
2
5
7
8
8
10
15
20
34
70
-------
现在需要统计time 在各范围内的个数,<=5,6-10,11-30,31-60,>60的个数
也就是希望获得如下结果:
--------
time|num
5     2    
10    4
30    2
60    1
61    1
--------

解决方案 »

  1.   

    select time,sum(if(time<=5,1,0)),sum(if(time between 6 and 10,1,0)),
    sum(if(time between 11 and 30,1,0)),sum(if(time between 31 and 60,1,0)),
    sum(if(time>60,1,0)) from tt group by time
      

  2.   

    mysql> select * from t_daguaio_O;
    +------+
    | time |
    +------+
    |    2 |
    |    5 |
    |    7 |
    |    8 |
    |    8 |
    |   10 |
    |   15 |
    |   20 |
    |   34 |
    |    7 |
    +------+
    10 rows in set (0.00 sec)mysql> select ELT(INTERVAL(`time`-1,5,10,30,60)+1,5,10,30,60,61) as kk ,count(*)
        -> from t_daguaio_O
        -> group by ELT(INTERVAL(`time`-1,5,10,30,60)+1,5,10,30,60,61)
        -> order by ELT(INTERVAL(`time`-1,5,10,30,60)+1,5,10,30,60,61)+0;
    +------+----------+
    | kk   | count(*) |
    +------+----------+
    | 5    |        2 |
    | 10   |        5 |
    | 30   |        2 |
    | 60   |        1 |
    +------+----------+
    4 rows in set (0.00 sec)mysql>
      

  3.   

    这段语句有点问题。最后获得的结果不是我要的.最后的group by time加进去就乱了。
    不过还是大致知道怎么处理了,谢谢
      

  4.   

    我想要的gouup by 其实是按照时间段 group by
    0-5 6-10....