对其他列使用 HOUR(date) 后选择列的平均值
Posted
技术标签:
【中文标题】对其他列使用 HOUR(date) 后选择列的平均值【英文标题】:Select average of column after using HOUR(date) for other column 【发布时间】:2021-09-10 11:14:42 【问题描述】:我的 MariaDB 数据库中有以下数据:
我希望能够选择每小时 P2 的平均值。我每 5 分钟记录一次,因此您可以假设表格在其他时间看起来相同。
这里是小提琴示例:
https://sqlize.online/?phpses=&sqlses=33ca7d9462a7b7af24a762072e621e7f&php_version=null&sql_version=mariadb
我知道它现在不起作用。 在示例数据中,我们有:
('1', '2021-02-28 23:35:00', '100', '836327'),
('2', '2021-02-28 23:40:00', '200', '0'),
('3', '2021-02-28 23:45:00', '300', '0'),
('4', '2021-02-28 23:50:00', '400', '0'),
('5', '2021-02-28 23:55:00', '500', '0'),
所以 23:00 小时的平均 P2 值应该是 300。
【问题讨论】:
【参考方案1】:您需要每小时的平均值,因此您可以在P2
列上使用AVG
函数,然后在GROUP BY HOUR(DT)
上使用。假设您也想为每个日期分组,结果查询将如下所示:
SELECT
DATE(DT), HOUR(DT), AVG(P2)
FROM dobridol
GROUP BY DATE(DT), HOUR(DT)
;
【讨论】:
【参考方案2】:您可以使用下一个查询:
SELECT
date_format(`dt`, '%Y-%m-%d') as `day`,
date_format(`dt`, '%H') as `hour`,
AVG(p2) AS hourly_average
FROM dobridol
GROUP BY date_format(`dt`, '%Y-%m-%d %H')
;
MariaDB fiddle
结果:
+============+======+================+
| day | hour | hourly_average |
+============+======+================+
| 2021-02-28 | 23 | 300.0000 |
+------------+------+----------------+
| 2021-03-01 | 00 | 650.0000 |
+------------+------+----------------+
【讨论】:
以上是关于对其他列使用 HOUR(date) 后选择列的平均值的主要内容,如果未能解决你的问题,请参考以下文章