2016-12-30 29 views
0

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

退房'INSERT ... SELECT ...'聲明 – Shadow

+0

你是什麼意思? – MadCat

回答

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; 
+0

這是完美的,我添加aggregatiolevel colum,我添加修訂> NOW() - 間隔1天的地方,只聚合「舊」數據。 – MadCat

相關問題