1小时内选择MySQL查询

时间:2018-11-02 06:28:11

标签: mysql

我要选择1小时平均1分钟数据的SELECT。

ex)

id |          time          | value
 1 |  2018-05-16 13:45:59   |   3
 1 |  2018-05-16 14:25:39   |   4
 1 |  2018-05-16 14:55:39   |   6
 1 |  2018-05-16 15:35:19   |   1

我要查看

id |          time          | value
 1 |  2018-05-16 13:00:00   |   3
 1 |  2018-05-16 14:00:00   |   5
 1 |  2018-05-16 15:00:00   |   1

我该怎么办?

2 个答案:

答案 0 :(得分:6)

  • 我们可以使用Date_format()函数将MySQL日期时间转换为其他指定格式。
  • 我们可以使用%Y-%m-%d %H:00:00转换为日期时间字符串,最多只能是小时级别。
  • 现在,我们只需要对此修改后的时间值Group By进行计算,并使用Avg()函数计算平均值。

尝试:

SELECT 
  id, 
  DATE_FORMAT(time, "%Y-%m-%d %H:00:00") AS hour_time
  AVG(value) 
FROM your_table 
GROUP BY id, hour_time 

其他详细信息:

  • %Y年,数字,四位数
  • %m月,数字(00..12)
  • %d每月的某天,数字(00..31)
  • %H小时(00..23)

有关各种可用格式说明符的完整列表,请参见:https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format

答案 1 :(得分:-1)

select id, 
       DATE_FORMAT(created_at, "%M %d %Y %H:00:00") time, 
       avg(value) value 
from table 
group by DATE_FORMAT(created_at, "%M %d %Y %H:00:00")