我每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
是否可以通过单个查询将数据保存在同一张表中?
最佳答案
如果要减少行数,那么我认为您必须插入具有汇总值的新行,然后删除原始的详细行。我不知道任何单个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;
关于mysql - 单个查询将数据分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41403069/