目的
グループごとに、タイムコードによって判別される最も新しい値を返します。LASTは単一スレッド関数です。
LAST関数を呼び出すには、GROUP BY TIME句を使用します。
構文
構文要素
- value_expression
- 評価するリテラルまたは列式。
value_expressionは、関数によって得られたビュー列に対する参照にはできません。また、順序付き分析関数や集約関数を含めることはできません。
戻り値
戻り値は、入力データ型と同じデータ型です。
結果の計算にはNULLは含められません。
使用上の注意
LASTは数値データでのみ有効です。
特定のグループに同時のタイムコード値がある場合など、タイが発生する場合は、タイのすべての結果が返されます。シーケンス番号にデータが含まれる場合、同一のタイムコード値の中で固有であると想定して、タイを中断することができます。
例: 時系列でのLASTの使用
/*PTI Table*/ SELECT $TD_TIMECODE_RANGE, $TD_GROUP_BY_TIME, BUOYID, LAST(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) ORDER BY 2,3,4; /*Non-PTI Table*/ SELECT $TD_TIMECODE_RANGE, $TD_GROUP_BY_TIME, BUOYID, LAST(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 2,3,4;
以下の行5~7では同順位が返されています。
TIMECODE_ RANGE | GROUP BY TIME (MINUTES(10)) | BUOYID | Last (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 08:10:00.000000+00:00', '2014-01-06 08:20:00.000000+00:00') | 2 | 0 | 10 |
('2014-01-06 08:10:00.000000+00:00', '2014-01-06 08:20:00.000000+00:00') | 2 | 0 | 100 |
('2014-01-06 09:00:00.000000+00:00', '2014-01-06 09:10:00.000000+00:00') | 7 | 1 | 72 |
('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 | 53 |
('2014-01-06 10:00:00.000000+00:00', '2014-01-06 10:10:00.000000+00:00') | 13 | 44 | 56 |
('2014-01-06 10:10:00.000000+00:00', '2014-01-06 10:20:00.000000+00:00') | 14 | 44 | 43 |