Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL过去30天每小时的平均值_Mysql_Sql_Moving Average - Fatal编程技术网

MySQL过去30天每小时的平均值

MySQL过去30天每小时的平均值,mysql,sql,moving-average,Mysql,Sql,Moving Average,我有一个表格,每分钟更新一次,我需要计算过去30天每小时的平均值 Timestamp | SB1_AC_GES_DIFF 2020-07-14 15:13:04 30 2020-07-14 15:12:07 27 ... ... 我想将结果保存在第二个名为avgTable的表中,如下所示 Timestamp | AVG_SB1 15:00 29 16:00

我有一个表格,每分钟更新一次,我需要计算过去30天每小时的平均值

Timestamp            | SB1_AC_GES_DIFF
2020-07-14 15:13:04     30
2020-07-14 15:12:07     27
...                     ...
我想将结果保存在第二个名为avgTable的表中,如下所示

Timestamp            | AVG_SB1
15:00                  29
16:00                  32
...                    ...
如果表格能够每天更新一次,可能是在12点钟,并且当天的日期部分发生变化时,这将是完美的选择。

您可以尝试:

INSERT INTO avg_table 
SELECT Date_format(Timestamp, "%h:00:00") AS HourlyTimeStamp, 
       Avg(sb1_ac_ges_diff) AS "AVG_SB1" 
FROM   table
WHERE Timestamp between DATEADD(DAY, -30, GETDATE()) AND GETDATE()
GROUP BY 1

假设您想要的是当天的平均滚动平均值。

您可以使用
hour()
函数:

select hour(timestamp) as hh, avg(sb1_ac_ges_diff)
from t
group by hh;
如果需要,可以将其转换为字符串或时间,但这对我来说似乎没有用处

如果您确实想要每天的小时数,那么:

select date(timestamp) as dd, hour(timestamp) as hh, avg(sb1_ac_ges_diff)
from t
group by dd, hh;