mysql平均数据间隔不超过3分钟

zengzsys  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(340)

我正在尝试创建一个查询来平均间隔不超过3分钟的数据行。当然,没有必要像图像中那样,两行相隔2秒。
因此,我如何在这样一个周期内选择行,并获得该周期内的平均值,例如“engine\u load”。

根据图像中的示例,我需要来自ids 19428-19431的数据和来自19423-19427的数据作为平均值。例如,如果有一行的日期时间为2021-04-27 12:25:15,那么这一行将是他“period”中唯一的一行,因为没有任何其他行比3分钟更近。

j2cgzkjk

j2cgzkjk1#

如果您将休息时间定义为三分钟,那么您可以使用 lag() 然后是定义组的累积和:

select min(id), max(id), min(datetime), max(datetime),
       avg(engine_load)
from (select t.*,
             sum(case when prev_datetime > datetime - interval 3 minute then 0 else 1 end) over (order by datetime) as grp
      from (select t.*,
                   lag(datetime) over (order by datetime) as prev_datetime
            from t
           ) t
     ) t
group by grp;

相关问题