例: PTIおよび非PTIテーブルの最大値の計算
次の例は、プライマリ タイム インデックス(PTI)と非PTIテーブルの両方でMAX関数を使用する方法を示しています。
この例では、時系列集約のテーブルとデータ定義の例のテーブルとデータ設定を使用します。
/*PTI Table*/ SELECT $TD_TIMECODE_RANGE, $TD_GROUP_BY_TIME, BUOYID, MAX(TEMPERATURE), COUNT(*) FROM OCEAN_BUOYS WHERE TD_TIMECODE BETWEEN TIMESTAMP '2014-01-06 08:00:00' AND TIMESTAMP '2014-01-06 10:30:00' GROUP BY TIME (MINUTES(10) AND BUOYID) ORDER BY 3,2,1; /*Non-PTI Table*/ SELECT $TD_TIMECODE_RANGE, $TD_GROUP_BY_TIME, BUOYID, MAX(TEMPERATURE), COUNT(*) FROM OCEAN_BUOYS_NONPTI WHERE TIMECODE BETWEEN TIMESTAMP '2014-01-06 08:00:00' AND TIMESTAMP '2014-01-06 10:30:00' GROUP BY TIME (MINUTES(10) AND BUOYID) USING TIMECODE(TIMECODE) ORDER BY 3,2,1;
結果:
両方のクエリーの結果は同じであるため、1つの結果セットだけが表示されます。
TIMECODE_RANGE | GROUP BY TIME (MINUTES(10)) | BUOYID | MAX (TEMPERATURE) | COUNT(*) |
---|---|---|---|---|
('2014-01-06 08:00:00.000000+00:00', '2014-01-06 08:10:00.000000+00:00') | 1 | 0 | 99 | 3 |
('2014-01-06 08:10:00.000000+00:00', '2014-01-06 08:20:00.000000+00:00') | 2 | 0 | 100 | 2 |
('2014-01-06 09:00:00.000000+00:00', '2014-01-06 09:10:00.000000+00:00') | 7 | 1 | 79 | 6 |
('2014-01-06 10:00:00.000000+00:00', '2014-01-06 10:10:00.000000+00:00') | 13 | 44 | 56 | 10 |
('2014-01-06 10:10:00.000000+00:00', '2014-01-06 10:20:00.000000+00:00') | 14 | 44 | 43 | 1 |
例: HAVING句を使用したMAX関数の結果のフィルタリング
次の例は、HAVING句でMAX関数を使用して結果をフィルタする方法を示しています。この例では、結果を3つ未満の値に基づいて計算する行をフィルタで除外します。
この例では、時系列集約のテーブルとデータ定義の例のテーブルとデータ設定を使用します。
/*PTI Table*/ SELECT $TD_TIMECODE_RANGE, $TD_GROUP_BY_TIME, BUOYID, MAX(TEMPERATURE) FROM OCEAN_BUOYS WHERE TD_TIMECODE BETWEEN TIMESTAMP '2014-01-06 08:00:00' AND TIMESTAMP '2014-01-06 10:30:00' GROUP BY TIME (MINUTES(10) AND BUOYID) HAVING COUNT(*) >= 3 ORDER BY 3,2,1; /*Non-PTI Table*/ SELECT $TD_TIMECODE_RANGE, $TD_GROUP_BY_TIME, BUOYID, MAX(TEMPERATURE) FROM OCEAN_BUOYS_NONPTI WHERE TIMECODE BETWEEN TIMESTAMP '2014-01-06 08:00:00' AND TIMESTAMP '2014-01-06 10:30:00' GROUP BY TIME (MINUTES(10) AND BUOYID) USING TIMECODE(TIMECODE) HAVING COUNT(*) >= 3 ORDER BY 3,2,1;
結果:
両方のクエリーの結果は同じであるため、1つの結果セットだけが表示されます。
TIMECODE_RANGE | GROUP BY TIME (MINUTES(10)) | BUOYID | MAX (TEMPERATURE) |
---|---|---|---|
('2014-01-06 08:00:00.000000+00:00', '2014-01-06 08:10:00.000000+00:00') | 1 | 0 | 99 |
('2014-01-06 09:00:00.000000+00:00', '2014-01-06 09:10:00.000000+00:00' | 7 | 1 | 79 |
('2014-01-06 10:00:00.000000+00:00', '2014-01-06 10:10:00.000000+00:00') | 13 | 44 | 56 |