单个查询以分组数据

时间:2016-12-30 21:47:21

标签: mysql sql database

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

是否可以在同一个表中使用单个查询保存数据?

1 个答案:

答案 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;