2016-12-30 4 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

チェックアウト '挿入...選択...'ステートメント – Shadow

+0

あなたは何を意味するのですか? – MadCat

答えて

1

行数を減らす場合は、集計された値で新しい行を挿入し、元の詳細な行を削除する必要があると思います。私は、1つのラッシュで挿入と削除のための単一のSQL文を知らない(同様に、同様の答えfrom symcbean at StackOverflowもあり、これらの2つの文を手続きにパックすることを推奨している)。

私は二つの文(手続きの有無にかかわらず)の余分な列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列を追加し、リビジョン> NOW() - 間隔1日を追加して、「古い」データのみを集計します。 – MadCat

関連する問題