我有一个表,每分钟更新一次,我需要为过去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点,当天的日期部分发生变化的时候。
发布于 2020-07-14 21:41:35
您可以只使用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;
发布于 2020-07-14 21:38:23
您可以尝试:
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
假设你想要平均滚动平均,不可知的一天。
https://stackoverflow.com/questions/62896245
复制相似问题