mysql过去N小时内的简单移动平均值

mysql过去N小时内的简单移动平均值,mysql,sql,datetime,average,window-functions,Mysql,Sql,Datetime,Average,Window Functions,下表中有一个cron作业,每5分钟填充一次速率,如果您能提供一些关于如何在速率列的最后6小时内获得简单移动平均值的建议,我们将不胜感激 SQL表如下所示: id rate created_at updated_at 1 11478.01 2020-08-29 03:11:28 2020-08-29 03:11:28 3 11481.28 2020-08-29 03:20:33 2020-08-29 03:20:33 4 11485.67

下表中有一个cron作业,每5分钟填充一次速率,如果您能提供一些关于如何在速率列的最后6小时内获得简单移动平均值的建议,我们将不胜感激

SQL表如下所示:

id  rate        created_at          updated_at
1   11478.01    2020-08-29 03:11:28 2020-08-29 03:11:28
3   11481.28    2020-08-29 03:20:33 2020-08-29 03:20:33
4   11485.67    2020-08-29 03:29:53 2020-08-29 03:29:53
7   11486.57    2020-08-29 03:39:50 2020-08-29 03:39:50
8   11507.53    2020-08-29 03:48:10 2020-08-29 03:48:10
9   11515.37    2020-08-29 03:53:47 2020-08-29 03:53:47
10  11496.06    2020-08-29 04:01:06 2020-08-29 04:01:06
11  11499.58    2020-08-29 04:02:49 2020-08-29 04:02:49
12  11490.15    2020-08-29 04:22:00 2020-08-29 04:22:00
13  11509.22    2020-08-29 05:19:55 2020-08-29 05:19:55
14  11491.55    2020-08-29 05:26:34 2020-08-29 05:26:34
选择平均值(速率)
从桌子上
在
处创建的位置选择平均值(速率)
从桌子上

在处创建时,可以使用窗口函数和范围框:

select
    t.*,
    avg(rate) over(
        order by created_at
        range between interval 6 hour preceding and current row
    ) avg_rate
from mytable t

请注意,窗口函数仅在MySQL的8.0版中可用。

您可以使用窗口函数和范围框:

select
    t.*,
    avg(rate) over(
        order by created_at
        range between interval 6 hour preceding and current row
    ) avg_rate
from mytable t

请注意,仅MySQL版本8.0中提供窗口功能。

是否应在6小时内创建和更新窗口功能?@ankit jindal表中每小时插入12次,理想情况下,应在过去6小时内获得SMA,根据值和created_at only请查看您的MySQL版本是否支持窗口聚合?created_at和Update_at之间的差异是否应为6小时?@ankit jindal表中每小时插入12次,理想情况下应在过去6小时内获得SMA,基于值和在Only创建的\u请查看您的MySQL版本是否支持窗口聚合?