我每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/

10-16 20:13
查看更多