【问题标题】:Select average of column after using HOUR(date) for other column对其他列使用 HOUR(date) 后选择列的平均值
【发布时间】: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。

【问题讨论】:

    标签: mysql sql select mariadb


    【解决方案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       |
      +------------+------+----------------+
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-11
        • 2021-07-08
        • 1970-01-01
        • 2014-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多