16.20 - GROUP BY TIME句 - Teradata Vantage NewSQL Engine

Teradata Vantage™ 時系列テーブルおよび操作

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1208-162K-JPN

目的

GROUP BY TIME句は、集約関数のセットを使用して、時間の観点からグループ化されたデータを計算できるようにするSELECT文の機能強化です。グループ化はPTIテーブルに対して最適化されていますが、タイムコード列がUSING TIMECODE句で明示的に指定されているため、非PTIテーブルでもサポートされます。

構文図と説明では、GROUP BY TIME句に固有のSELECT構文の一部のみを扱っています。SELECTで使用できるその他の構文の詳細については、<Teradata Vantage™ SQLデータ操作言語、B035-1146>を参照してください。

構文









構文要素

GROUP BY TIME
次に、GROUP BY TIME句の構文について説明します。
timebucket duration
図に示されている時間単位のいずれかを使用して指定できる継続時間。期間には略語を使用できます。
時間単位 正式なフォームの例 省略表記
暦年 CAL_YEARS(4) 4cy

4cyear

4cyears
暦月 CAL_MONTHS(5) 5cm

5cmonth

5cmonths
暦日

タイム ゼロで特定された日の00:00:00.000000に始まり、23:59:59.999999に終わる24時間の期間。

CAL_DAYS(6) 6cd

6cday

6cdays
WEEKS(3) 3w

3week

3weeks

タイム ゼロから始まる24時間の期間。

DAYS(5) 5d

5day

5days
時間 HOURS(4) 4h

4hr

4hrs

4hour

4hours
MINUTES(23) 23m

23mins

23minute

23minutes
SECONDS(33) 33s

33sec

33secs

33second

33seconds
ミリ秒 MILLISECONDS(12) 12ms

12msec

12msecs

12millisecond

12milliseconds
マイクロ秒 MICROSECONDS(10) 10us

10usec

10usecs

10microsecond

10microseconds

時間単位表現(CAL_YEARS、CAL_MONTHSなど)を使用して、CREATE TABLE(時系列形式)とGROUP BY TIME句の両方にtimebucket_durationを指定します。

時間単位をGROUP BY TIME句で使用する場合、時間単位は集約用の各タイムバケットの期間を定義します。また、指定される可能性のある各タイムバケットに固有番号を割り当てるために使用されます。$TD_GROUP_BY_TIME仮想列でタイムバケット番号にアクセスできます。詳細は、$TD_GROUP_BY_TIMEを参照してください。

時間単位には、年や月などの値は格納されません。例えば、CAL_YEARS(2017)では年が2017に設定されません。これは、timebucket_durationを2017年の間隔に設定します。同様に、CAL_MONTHS(7)では月が7月に設定されません。これは、timebucket_durationを7ヶ月の間隔に設定します。

暦日(CAL_DAYS)は、00:00: 00.000000に始まり、23:59: 59.999999に終わる24時間の期間です。例えば、金曜日の00:00: 00.000000から23:59: 59.999999までです。

日時間単位は、任意の時点を基準にした24時間の期間です。例えば、タイム ゼロが2016-10-01 12:00:00と等しいGROUP BY TIMEクエリーでは、日バケットは2016-10-01 12:00: 00.000000~2016-10-02 11:59: 59.999999になります。これは複数の暦日にまたがりますが、1日を表わす1つの24時間の期間を含みます。

pos_int
最大値が32767の16ビットの正の整数。
value_expression

value_expressionは、列または列を含む式(スカラー サブクエリーを除く)です。これらの式は、時間に関連しないグループ化のために使用されます。

1つ以上のカンマ区切り値の式がある可能性があります。

value_expressionは、関数から派生したビューの列への列参照であってはならず、順序付き分析または集約関数を含むことはできません。value_expressionはリテラルにすることはできません。

pos_int
1 ~ 32767の範囲(両端含む)の正の整数。
optional_clauses
GROUP BY TIMEのオプションの句は、USING TIMECODEとFILLです。
timestamp_date_col
非PTIテーブルのタイムコードとして機能する列式(オプションのテーブル名を指定)。
seqno_col
シーケンス番号である列式(オプションのテーブル名を指定)。PTIテーブルの場合、TD_SEQNOまたはシーケンス番号として機能するその他の列を指定できます。非PTIテーブルの場合、seqno_colはTD_SEQNOの役割を果たす列です(非PTIテーブルにはTD_SEQNOがないため)。
fill
FILL句を使用すると、欠落しているタイムバケット値の値を指定できます。次の変数と値はFILL句によって使用されます。詳細は、FILL句を使用して欠落タイムバケットを処理するを参照してください。
NULLS
欠落しているタイムバケットは、すべての集約結果にNULL値を挿入してユーザーに返されます。
numeric_constant
Teradata Databaseがサポートする数値リテラル。欠落しているタイムバケットは、すべての集約結果に指定された定数値を挿入してユーザーに返されます。FILL句で指定されたデータ型が集約関数の入力データ型と互換性がない場合、エラーが報告されます。
PREVIOUS
PREV
欠落しているタイムバケットは、欠損値がない直前のタイムバケットの値が挿入された集約結果とともにユーザーに返されます。欠落しているタイムバケットの直前のタイムバケットも欠落している場合、両方のバケット、および欠損値があるその他の直前のタイムバケットは、欠損値のない最直近の値でロードされます。欠落しているタイムバケットに結果を含む先行のタイムバケットがない場合(例えば、タイムバケットがシリーズの最初のものである場合、またはシリーズ全体の先行するタイムバケットがすべて欠落している場合)、欠落しているタイムバケットは、すべての集約結果にNULLの値を挿入してユーザーに返されます。PREVIOUSの代わりに、略語のPREVが使用されることがあります。
NEXT
欠落しているタイムバケットは、非欠損値を持つ直後のタイムバケットの値が挿入された集約結果とともにユーザーに返されます。欠落しているタイムバケットの直後のタイムバケットも欠落している場合、両方のバケット、および欠損値があるその他の直後のタイムバケットは、欠損値のない最後続の値でロードされます。欠落しているタイムバケットに結果を含む後続のタイムバケットがない場合(例えば、タイムバケットがシリーズの最後のものである場合、またはシリーズ全体の後続するタイムバケットがすべて欠落している場合)、欠落しているタイムバケットは、すべての集約結果にNULLの値を設定してユーザーに返されます。