Mysql 按小时分组不适用于周范围

标签 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 到 2014-05-17 00:05:01

的值

并且没有错误。

帮我找出错误。

抱歉我的英语不好

最佳答案

这是因为当您使用 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)

关于Mysql 按小时分组不适用于周范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23824150/

相关文章:

python - 将 groupby 应用于 python pandas 数据帧时,如何获取组的第一个时间戳(索引)?

java - 从 Instant.now() 生成的日期中提取日期、小时和分钟

jenkins - 如何每 15 分钟安排一次 Jenkins 作业

自动执行备份bat时mysqldump错误1728

mysql - 过程中的 SQL 1064

sql - 整理出三个第一次出现的属性

php - 创建一个jquery函数,根据比较将分数添加到MySQL表中的total-points列中

mysql - 如果列值不在一组不同列的值中,则 SQL 选择行

python - Pandas 分组日期

sql - 如何向日期时间 SQL 列数据添加 1 小时?