【问题标题】:MySQL window function to calculate averages or maximums every 5 minutesMySQL 窗口函数每 5 分钟计算一次平均值或最大值
【发布时间】:2021-09-17 21:05:52
【问题描述】:

我有一个表 data 与列 clock (unixtime) 和 value,其中记录每 50-70 秒出现一次。我需要绘制一个月度图表,以反映每 5 分钟时间的最大值(或平均值)。为此,我需要创建一个查询,每 5 分钟对值进行分组和计数。但我就是做不到。

SELECT clock, value FROM data WHERE clock BETWEEN 1622667600 AND 1625259600

(示例时钟)返回:

如何将其按 5 行或 300 秒分组,以获得如下结果(例如,MAX of 5 rows)?

  1. 1622667879 - 94691016
  2. 1622668182 - 43543688
  3. 1622668479 - 42904552
  4. 1622668781 - 41118136
  5. 1622669079 - 47856848

【问题讨论】:

    标签: mysql sql group-by window-functions


    【解决方案1】:

    五分钟有 300 秒。所以你可以使用算术来聚合结果:

    SELECT (FLOOR(clock / 300) * 300) as period_start,
           MIN(clock), MAX(clock), AVG(value)
    FROM data 
    WHERE clock BETWEEN 1622667600 AND 1625259600
    GROUP BY FLOOR(clock / 300);
    

    我不知道你是否想要 WHERE 子句,但我把它留在里面了。

    【讨论】:

      猜你喜欢
      • 2019-02-21
      • 2017-09-11
      • 2016-09-14
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      相关资源
      最近更新 更多