表里的内容如下所示,各个时间的risk值,time是TimeStamp类型,现在我想查出来每个小时内的risk值的总和+----+------+---------------------+
| ID | risk | time                |
+----+------+---------------------+
|  1 | 10.5 | 2008-06-15 12:34:07 |
|  2 | 30.4 | 2008-06-15 12:34:18 |
|  3 |  9.1 | 2008-06-15 12:38:24 |
|  4 |   25 | 2008-06-14 09:39:00 |
|  5 | 11.7 | 2008-06-14 13:39:16 |
|  6 | 13.3 | 2008-06-14 13:40:09 |
+----+------+---------------------+
结果如下:
50                      //2008-06-15 12时的
25                      //2008-06-14 09时的  
25                      //2008-06-14 13时的
有没有什么好的方法?我试过select SUM(risk) from test where time like '2008-06-15 12:%';
这样的话只能查出来一个
50                      //2008-06-15 12时的
如果值很多的话得用很多次查询,能不能一次就查出来??谢谢大家了

解决方案 »

  1.   

    Try
    select SUM(risk) as total from test where 1 group by hour(`time`);
      

  2.   


    不错,谢谢了
    不过,如果不是同一天的呢,不应该加在一起吧
    如:
    +----+------+---------------------+
    | ID | risk | time                |
    +----+------+---------------------+
    |  1 | 10.5 | 2008-06-15 12:34:07 |
    |  2 | 30.4 | 2008-06-15 12:34:18 |
    |  3 |  9.1 | 2008-06-15 12:38:24 |
    |  4 |   25 | 2008-06-14 09:39:00 |
    |  5 | 11.7 | 2008-06-14 13:39:16 |
    |  6 | 13.3 | 2008-06-14 13:40:09 |
    |  7 |   10 | 2008-06-14 12:34:00 |
    +----+------+---------------------+
    又多了一个2008-06-14日的,不能和2008-06-15日的加在一起,结果应该是:
    50                      //2008-06-15 12时的
    25                      //2008-06-14 09时的 
    25                      //2008-06-14 13时的 
    10                      //2008-06-14 12时的
    这样的话要怎么办呢?
      

  3.   

    select SUM(risk) as total from test where 1 group by day('time'),hour('time');
      

  4.   

    select SUM(risk) as total from test where 1 group by year('time'),month('time'),day('time'),hour('time');
      

  5.   


    select SUM(risk) as total from test where 1 group by to_days(`time`),hour(`time`);
      

  6.   

    不知道啊,我这里结果是一个值,就是全加在一起了,还是谢谢。yueliangdao0608 的是正解。谢谢大家了,又学到了些东西。结帖,给分。