次の例は、RANK(ANSI)を使用して、時系列全体で特定のタイムバケットの平均をランク付けする方法を示しています。
この例では、時系列集約のテーブルとデータ定義の例のテーブルとデータ設定を使用します。
RANK(ANSI)を使用する前に、AVGを実行します。AVG関数は、プライマリ タイム インデックス(PTI)と非PTIテーブルの両方で使用できます。次の例では、時系列データから平均を取得します。
/*PTI Table*/ SELECT $TD_TIMECODE_RANGE, $TD_GROUP_BY_TIME, BUOYID, AVG(TEMPERATURE) FROM OCEAN_BUOYS WHERE TD_TIMECODE BETWEEN TIMESTAMP '2014-01-06 08:00:00' AND TIMESTAMP '2014-01-06 10:30:00' AND BUOYID=0 GROUP BY TIME (MINUTES(10) AND BUOYID) ORDER BY 1,2,3; /*Non-PTI Table*/ SELECT $TD_TIMECODE_RANGE, $TD_GROUP_BY_TIME, BUOYID, AVG(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) ORDER BY 1,2,3;
結果:
両方のクエリーの結果は同じであるため、1つの結果セットだけが表示されます。
TIMECODE_RANGE | GROUP BY TIME (MINUTES(10)) | BUOYID | AVG (TEMPERATURE) |
---|---|---|---|
('2014-01-06 08:00:00.000000+00:00', '2014-01-06 08:10:00.000000+00:00') | 1 | 0 | 54 |
('2014-01-06 08:10:00.000000+00:00', '2014-01-06 08:20:00.000000+00:00') | 2 | 0 | 55 |
('2014-01-06 09:00:00.000000+00:00', '2014-01-06 09:10:00.000000+00:00' | 7 | 1 | 74 |
('2014-01-06 10:00:00.000000+00:00', '2014-01-06 10:10:00.000000+00:00') | 13 | 14 | 50 |
('2014-01-06 10:10:00.000000+00:00', '2014-01-06 10:20:00.000000+00:00') | 14 | 14 | 43 |
RANK(ANSI)を使用して、各時系列の平均をランク付けします。
/*PTI Table*/ SEL TIMECODE_RANGE, TBN, BUOYID, AVG_TEMPERATURE, RANK() OVER (PARTITION BY BUOYID ORDER BY AVG_TEMPERATURE) FROM ( SELECT $TD_TIMECODE_RANGE as TIMECODE_RANGE, $TD_GROUP_BY_TIME as TBN, BUOYID, AVG(TEMPERATURE) AS AVG_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) ) AS NESTED_AVG_TABLE ORDER BY 3,5; /*Non-PTI Table*/ SEL TIMECODE_RANGE, TBN, BUOYID, AVG_TEMPERATURE, RANK() OVER (PARTITION BY BUOYID ORDER BY AVG_TEMPERATURE) FROM ( SELECT $TD_TIMECODE_RANGE as TIMECODE_RANGE, $TD_GROUP_BY_TIME as TBN, BUOYID, AVG(TEMPERATURE) AS AVG_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) ) AS NESTED_AVG_TABLE ORDER BY 3,5;
結果:
両方のクエリーの結果は同じであるため、1つの結果セットだけが表示されます。
TIMECODE_RANGE | TBN | BUOYID | AVG (TEMPERATURE) | RANK |
---|---|---|---|---|
('2014-01-06 08:00:00.000000+00:00', '2014-01-06 08:10:00.000000+00:00') | 1 | 0 | 54 | 1 |
('2014-01-06 08:10:00.000000+00:00', '2014-01-06 08:20:00.000000+00:00') | 2 | 0 | 55 | 2 |
('2014-01-06 09:00:00.000000+00:00', '2014-01-06 09:10:00.000000+00:00') | 7 | 1 | 74 | 1 |
('2014-01-06 10:10:00.000000+00:00', '2014-01-06 10:20:00.000000+00:00') | 13 | 44 | 43 | 1 |
('2014-01-06 10:00:00.000000+00:00', '2014-01-06 10:10:00.000000+00:00') | 13 | 44 | 50 | 2 |