Mysql group by hour不适用于周范围

时间:2014-05-23 08:13:06

标签: mysql group-by hour

我在数据库中有时间范围:

date                   temp
2014-05-09 20:40:01    19.6875
2014-05-09 20:50:01    19.375
.....................
2014-05-10 00:10:01    17.5
........................
2014-05-23 08:25:01    27.4375

我希望以小时为单位获得所有AVG温度。这里是sql查询:

SELECT AVG( `temp` ) , `date` FROM `temperature` WHERE `date` BETWEEN '2014-05-16 11:06' AND '2014-05-23 11:06' GROUP BY HOUR( `date` )

但是在结果中我只有2014-05-16 23:06:02 to 2014-05-17 00:05:01

范围内的值

没有错误。

帮我找出错误。

Sory因为我的英语不好

1 个答案:

答案 0 :(得分:1)

这是因为当您使用GROUP BY并显示未分组的字段时,mysql无法显示该字段的所有值。所以它只显示一个。

此查询更有意义:

SELECT AVG( `temp` ) , HOUR(`date`) FROM `temperature` WHERE `date` BETWEEN '2014-05-16 11:06' AND '2014-05-23 11:06' GROUP BY HOUR( `date` )

或者这个(讨论后)

SELECT AVG( temp ) ,
    YEAR(date),
    MONTH(date),
    DAY(date),
    HOUR(date)
FROM temperature
WHERE date BETWEEN '2014-05-16 11:06' AND '2014-05-23 11:06'
GROUP BY YEAR(date),MONTH(date),DAY(date),HOUR(date)