首页 > 解决方案 > 在 MySQL 中计算一个时间间隔内的平均值总和

问题描述

我有一个多个传感器的流量表,我想报告过去 24 小时内所有传感器每隔 5 分钟的平均流量。到目前为止,我有:

SELECT SUM(total_rate) as 'rate'
FROM sensor_stats WHERE `timestamp` > now() - interval 24 hour
GROUP BY UNIX_TIMESTAMP(`timestamp`) DIV 300
rate
10375130
7161878
22444777
11157688
28045465

这让我走上了正轨,但现在我需要每个间隔的平均值。该用例试图找出在给定的一天内流量何时达到最高值。我计划在图表上显示 5 分钟的间隔。

标签: mysqlsql

解决方案


我想你需要的是

SELECT SUM(total_rate) / COUNT(*) as 'rate'
FROM sensor_stats WHERE `timestamp` > now() - interval 24 hour
GROUP BY UNIX_TIMESTAMP(`timestamp`) DIV 300

或者干脆

SELECT AVG(total_rate) as 'rate'
FROM sensor_stats WHERE `timestamp` > now() - interval 24 hour
GROUP BY UNIX_TIMESTAMP(`timestamp`) DIV 300

推荐阅读