3

定期的な測定を行う SQL テーブルがあります。一度に任意の数の行に対して、値列に対して集計メソッド (SUM など) を返すことができるようにしたいと考えています。もし私が持っていたら

id  |  reading
1      10
5      14
7      10
11     12
13     18
14     16

一度に 2 行を合計して (24, 22, 34) を取得することも、一度に 3 行を合計して (34, 46) を取得することもできます。ID が連続していない可能性があることに注意してください。並べ替え順に行数で操作したいだけです。

現実の世界では、識別子はタイムスタンプですが、(おそらくunix_timestamp()呼び出しを適用した後)上記の単純なケースで機能するものはすべて適用できるはずです。問題がある場合は、プロット クエリに対して返される結果の数を適切にスケーリングしようとしています。これを行うためのよりスマートな方法があるでしょうか? ソリューションが一般的であり、データに特定のストレージメカニズム/スキーマを課さないことを望みます。

4

1 に答える 1

2

クエリ結果を並べ替えてグループ化することができます

SET @seq = 0;

SELECT SUM(data), ts FROM (
    SELECT @seq := @seq + 1 AS seq, data, ts FROM table ORDER BY ts LIMIT 50
) AS tmp GROUP BY floor(tmp.seq / 3);
于 2012-06-13T15:45:40.070 に答える