データを集計するクエリについて,ID1の観測所の1分間の平均気温を出力する場合を例に説明します。この場合,まずID1の1分間の気温データを集計し,その集計結果から平均を求めます。このクエリを実行した場合の,入力データと出力データを次の図に示します。
図2-18 データを集計するクエリを実行した場合の入力データと出力データ
![[図データ]](figure/zd021700.gif)
- クエリの内容
- データを集計するには,集合関数を使用して,SELECT句に集計方法を指定します。また,特定のデータを集計の対象とするため,比較演算子を使用してWHERE句にデータの選択条件を指定します。
REGISTER STREAM temperature_stream
(observation_time TIME, id INTEGER, temperature INTEGER);
REGISTER QUERY average_calculation_id_1
ISTREAM (
SELECT AVG(temperature) AS average_temperature
FROM temperature_stream[RANGE 1 MINUTE]
WHERE id = 1);
- クエリの解説
- このクエリの処理対象は,過去1分間のタプルです。FROM句には,ストリームデータから時間でタプルを抽出するRANGEウィンドウを指定します。
- 出力データは,ID1の観測所の1分間の平均気温です。SELECT句には,「temperature」を対象として平均値を計算する集合関数「AVG」と,計算結果のデータの名称として「average_temperature」を指定しています。また,この計算処理の対象として,WHERE句には,「id = 1」を指定しています。
- このように,SELECT句とWHERE句の両方で処理を実行した場合,WHERE句の処理が最初に実行され,その結果に対してSELECT句による処理が実行されます。
- なお,先に処理が実行されるWHERE句で選択されたタプルの集合を中間リレーションといいます。このクエリでは,ID1の観測所の過去1分間のタプルの集合が該当します。