MySQL 平均每 24 小时 1 个月

Posted

技术标签:

【中文标题】MySQL 平均每 24 小时 1 个月【英文标题】:MySQL Average every 24 hours of 1 month 【发布时间】:2016-03-07 17:52:17 【问题描述】:

所以我有一个包含 100 行的表,如下所示:

+--+----------+-------------------+
|ID|metervalue  |datetime         |
|1   |10        |2016-02-23 01:00 |
|2   |20        |2016-02-23 02:00 |
|3   |5         |2016-02-23 03:00 |
|... |...       |...              |
|x   |x         |2016-02-24 01:00 |
|x   |x         |2016-02-24 02:00 |
|x   |x         |2016-02-24 03:00 |
|... |...       |...              |
|x   |x         |2016-03-01 01:00 |
|x   |x         |2016-03-01 02:00 |
|x   |x         |2016-03-01 03:00 |
+--+----------+-------------------+

因此,很多天,每小时都会读取一些仪表读数。

现在我需要获取图表数据。每小时图表数据很简单,因为我可以按原样查询数据,但对于“每月”数据,我需要查询一个月内的所有行,以便每 24 小时平均为一行。

所以 30 行中的一行(假设一个月有 30 天)应该包含 24 小时平均到 1 天。

我尝试了这个解决方案,但它没有像我希望的那样工作:Average of data for every 5 minutes in the given times

我认为该答案中的GROUP BY 不起作用,因为我不想平均,例如,每天每五个小时,而是我想平均一天中的 24 小时一天了。

【问题讨论】:

按日期分组(日期时间)?? 【参考方案1】:

您仍然会使用GROUP BY,但您可以通过DATE() 函数返回的内容来执行此操作,该函数忽略了数据的时间部分,如下所示:

SELECT DATE(a.datetime), AVG(a.metervalue)
FROM MyInterestingTable a
GROUP BY DATE(a.datetime)

【讨论】:

DATE 函数与 DAY 函数有何不同,后者似乎不起作用? 根据文档,它返回月份中的数字日期,例如:DAY(2016-02-24) 返回 24。DAY(2011-05-24) 也返回 24。如您所见,这不是你在描述的场景中想要什么。在这种情况下,DATE() 只是删除了时间部分,这正是您想要的。 啊!所以这就是问题所在,DAY 函数忽略了月份和年份!谢谢大佬!

以上是关于MySQL 平均每 24 小时 1 个月的主要内容,如果未能解决你的问题,请参考以下文章

Mysql 每小时平均,间隔从半小时开始

mysql查询每小时平均值

根据当地时间 (HH:MM) 计算 24 小时周期内每分钟的平均销售额

陈天艺1636050045假设跑步者1小时40分钟35秒跑了24英里。编写一个程序显示每小时以公里为单位的平均速度值

作业:1.12假设一个跑步者1小时40分钟35秒 内跑了24英里。编写一个程序显示以每小时多少公里为单位的平均速度值(注意,1英里等于1.6公里。)

作业:1.12假设一个跑步者1小时40分钟35秒 内跑了24英里。编写一个程序显示以每小时多少公里为单位的平均速度值(注意,1英里等于1.6公里。)