我有一个带有以太网接口(interface)的微 Controller ,并连接了 3 个温度传感器。 温度数据被发送到另一台运行脚本的机器,该脚本通过传感器 ID 将值放入 MySQL 数据库。
微 Controller 每分钟发送 45-50 次温度值。
我正在尝试使用绘图工具获取分钟平均数,但我在弄清楚如何获取过去 24 小时的平均 pr 分钟时遇到了问题。
数据看起来像这样:
+----------+-----------------+---------------------+
| sensorID | sensorTempValue | sensorTimeStamp |
+----------+-----------------+---------------------+
| 3 | 320 | 2013-12-09 09:38:00 |
| 2 | 156 | 2013-12-09 09:38:01 |
| 1 | 360 | 2013-12-09 09:38:02 |
| 3 | 320 | 2013-12-09 09:38:04 |
| 2 | 156 | 2013-12-09 09:38:05 |
| 1 | 360 | 2013-12-09 09:38:06 |
| 3 | 319 | 2013-12-09 09:38:08 |
| 2 | 156 | 2013-12-09 09:38:09 |
| 1 | 360 | 2013-12-09 09:38:10 |
| 3 | 319 | 2013-12-09 09:38:12 |
| 2 | 156 | 2013-12-09 09:38:13 |
……
sensorID 是每个 DS18x20 数字传感器的 ID,sensorTempValue 是它返回的原始数据,因此将该值除以 16 得到摄氏温度值。
SELECT sensorTimeStamp, sensorTempValue/16
FROM (SELECT *
FROM temperatureData
WHERE sensorTimeStamp > DATE_SUB(now(), INTERVAL 1 DAY)
AND sensorID = 2
GROUP BY MINUTE(sensorTimeStamp))
m order by sensorTimeStamp
这是我得到的最接近的时间,但这仍然不是整个 23 小时。 我猜这可以通过分组等方式来完成。
最佳答案
我认为您正在寻找这样的东西:
select
sensorID,
DATE_FORMAT(sensorTimeStamp, '%Y-%m-%d %H:%i'),
(SUM(sensorTempValue)/count(sensorTempValue))/16
from temperatureData
where now()-temperatureData.sensorTimeStamp < INTERVAL 1 DAY
group by sensorID, DATE_FORMAT(sensorTimeStamp, '%Y-%m-%d %H:%i')
关于mysql - SQL按分钟平均值获取温度值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20467612/