MySQL过去30天每小时的平均值
我有一个表格,每分钟更新一次,我需要计算过去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
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;