【发布时间】:2013-12-09 09:54:41
【问题描述】:
我有一个带有以太网接口的微控制器和连接到它们的 3 个温度传感器。 温度数据被发送到另一台运行脚本的机器,该脚本通过传感器 ID 将值放入 MySQL 数据库。
微控制器每分钟发送 45-50 次温度值。
我正在尝试使用绘图工具获得一个明智的平均分钟数,但我在弄清楚如何获得过去 24 小时的平均公关分钟数时遇到了问题。
数据如下所示:
+----------+-----------------+---------------------+
| 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 小时。 我猜这可以通过分组来完成。
【问题讨论】:
-
我很惊讶 AVG 函数在您的查询中没有出现。这是有原因的吗?
-
在数据集上运行 AVG 之前,我需要弄清楚如何选择正确的数据集。