2.3.2 条件を満たすデータの抽出

条件を満たすデータの抽出処理の実行例を次の二つのクエリで説明します。

<この項の構成>
(1) 気温が0度以下のデータを出力するクエリ
(2) 気温が-10度以上,かつ0度以下のデータを出力するクエリ

(1) 気温が0度以下のデータを出力するクエリ

「気温が0度以下のデータを出力する」という,一つの条件を満たすデータを出力するクエリについて説明します。このクエリを実行した場合の,入力データと出力データを次の図に示します。

図2-15 一つの条件を満たすデータを出力するクエリを実行した場合の入力データと出力データ

[図データ]

クエリの内容
気温が0度以下という条件を満たすデータを出力する場合,比較演算子を使用してWHERE句にデータの選択条件を指定します。

REGISTER STREAM temperature_stream
(observation_time TIME, id INTEGER, temperature INTEGER);
REGISTER QUERY below_zero_filter
ISTREAM (
SELECT observation_time, id, temperature
FROM temperature_stream[ROWS 1]
WHERE temperature <= 0);

クエリの解説
このクエリの処理対象は,最新の一つのタプルとします。FROM句には,タプルの個数でストリームデータからタプルを抽出するROWSウィンドウを指定します。
出力するデータは,気温が0度以下のデータです。WHERE句には,「temperature <= 0」を指定します。これは,temperatureの値と0を比較し,temperatureの値が0以下のタプルを選択することを示します。

(2) 気温が-10度以上,かつ0度以下のデータを出力するクエリ

「気温が-10度以上,かつ0度以下のデータを出力する」という,二つの条件を満たすデータを出力するクエリについて説明します。このクエリを実行した場合の,入力データと出力データを次の図に示します。

図2-16 二つの条件を満たすデータを出力するクエリを実行した場合の入力データと出力データ

[図データ]

クエリの内容
気温が-10度以上,かつ0度以下という条件を満たすデータを出力する場合,比較演算子と論理演算子ANDを使用して,WHERE句にデータの選択条件を指定します。

REGISTER STREAM temperature_stream
(observation_time TIME, id INTEGER, temperature INTEGER);
REGISTER QUERY temperature_range_filter
ISTREAM (
SELECT observation_time, id, temperature
FROM temperature_stream[ROWS 1]
WHERE -10 <= temperature AND temperature <= 0);

クエリの解説
このクエリの処理対象は,最新の一つのタプルとします。FROM句には,タプルの個数でストリームデータからタプルを抽出するROWSウィンドウを指定します。
出力するデータは,気温が-10度以上,0度以下のデータです。WHERE句には,「-10 <= temperature」と「temperature <= 0」の条件を連結して指定します。これは,temperatureの値と-10を比較し,temperatureの値が-10以上であり,かつtemperatureの値と0を比較し,temperatureの値が0以下のタプルを選択することを示します。