我每5秒钟在MySQL数据库中保存数据,我想平均将这些数据分组为5分钟。
选择是这样的:
SELECT MIN(revision) as revrev,
AVG(temperature),
AVG(humidity)
FROM dht22_sens t
Group by revision div 500
ORDER BY `revrev` DESC
是否可以在同一个表中使用单个查询保存数据?
答案 0 :(得分:1)
如果是关于减少行数,那么我认为你必须插入一个带有聚合值的新行,然后删除原始的详细行。我不知道任何单个sql语句的插入和删除(参见类似的答案from symcbean at StackOverflow,他还建议将这两个语句打包到一个过程中)。
我建议添加一个额外的列aggregationLevel
并做两个语句(有或没有程序):
insert into dht22_sens SELECT MIN(t.revision) as revision,
AVG(t.temperature) as temperature,
AVG(t.humidity) as humidity,
500 as aggregationLevel
FROM dht22_sens t
WHERE t.aggregationLevel IS NULL;
delete from dht22_sens where aggregationLevel is null;