2.3.5 データの分類と集計

複数あるデータの中から,データを分類したあとに集計をするクエリについて,観測所ごとの1分間の平均気温を出力する場合を例に説明します。このクエリを実行した場合の,入力データと出力データを次の図に示します。

図2-19 データを分類したあとに集計をするクエリを実行した場合の入力データと出力データ

[図データ]

クエリの内容
データを分類するには,GROUP BY句を使用して分類方法を指定します。GROUP BY句は,WHERE句の直後(WHERE句を指定しない場合はFROM句の直後)に指定します。

REGISTER STREAM temperature_stream
(observation_time TIME, id INTEGER, temperature INTEGER);
REGISTER QUERY average_calculation
ISTREAM (
SELECT id, AVG(temperature) AS average_temperature
FROM temperature_stream[RANGE 1 MINUTE]
GROUP BY id);

クエリの解説
このクエリの処理対象は,過去1分間のタプルです。FROM句には,ストリームデータから時間でタプルを抽出するRANGEウィンドウを指定します。
出力データは,観測所ごとの1分間の平均気温です。SELECT句には,「temperature」を対象として平均値を計算する集合関数「AVG」と,計算結果のデータの名称として「average_temperature」を指定しています。また,観測所ごとのデータを求めるため,GROUP BY句に「id」を指定しています。
このように,SELECT句とGROUP BY句の両方で処理を実行した場合,GROUP BY句で指定した分類に従って,SELECT句による処理が実行されます。