对其他列使用 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) 后选择列的平均值的主要内容,如果未能解决你的问题,请参考以下文章

根据其他列的名称计算熊猫的平均值[重复]

在access里用一个列显示其他列的平均值

熊猫填充列值以具有其他列的相似值

熊猫情节栏:情节中出现其他列的图例

8.聚集函数 ---SQL

根据其他列的顺序从组中选择一个值