GROUP BY TIME Clauseの構文 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - 時系列テーブルと操作の概要

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/zzg1600277315070.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1208
Product Category
Software
Teradata Vantage
{ GROUP BY options |

  GROUP BY TIME ( { timebucket_duration | * }
    [ AND value_expression [,...] ] )
    [ USING ( timestamp_date_col [, seqno_col ] ) ]
    [ FILL ( { NULLS | numeric_constant | PREVIOUS | NEXT } ) ] 
}

構文要素

options
GROUP BY TIMEのオプションの句は、USING TIMECODEとFILLです。
timebucket_duration
{ CAL_YEARS |
  CAL_MONTHS |
  CAL_DAYS |
  WEEKS |
  DAYS |
  HOURS |
  MINUTES |
  SECONDS |
  MILLISECONDS |
  MICROSECONDS
} ( pos_int )
図に示されている時間単位のいずれかを使用して指定できる継続時間。期間には略語を使用できます。
時間単位 正式なフォームの例 省略表記
暦年 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時間の期間を含みます。

value_expression

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

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

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

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 Vantageがサポートする数値リテラル。欠落しているタイムバケットは、すべての集約結果に指定された定数値を挿入してユーザーに返されます。FILL句で指定されたデータ型が集約関数の入力データ型と互換性がない場合、エラーが報告されます。
PREVIOUS
PREV
欠落しているタイムバケットは、欠損値がない直前のタイムバケットの値が挿入された集約結果とともにユーザーに返されます。欠落しているタイムバケットの直前のタイムバケットも欠落している場合、両方のバケット、および欠損値があるその他の直前のタイムバケットは、欠損値のない最直近の値でロードされます。欠落しているタイムバケットに結果を含む先行のタイムバケットがない場合(例えば、タイムバケットがシリーズの最初のものである場合、またはシリーズ全体の先行するタイムバケットがすべて欠落している場合)、欠落しているタイムバケットは、すべての集約結果にNULLの値を挿入してユーザーに返されます。PREVIOUSの代わりに、略語のPREVが使用されることがあります。
NEXT
欠落しているタイムバケットは、非欠損値を持つ直後のタイムバケットの値が挿入された集約結果とともにユーザーに返されます。欠落しているタイムバケットの直後のタイムバケットも欠落している場合、両方のバケット、および欠損値があるその他の直後のタイムバケットは、欠損値のない最後続の値でロードされます。欠落しているタイムバケットに結果を含む後続のタイムバケットがない場合(例えば、タイムバケットがシリーズの最後のものである場合、またはシリーズ全体の後続するタイムバケットがすべて欠落している場合)、欠落しているタイムバケットは、すべての集約結果にNULLの値を設定してユーザーに返されます。
pos_int
最大値が32767の16ビットの正の整数。
1 ~ 32767の範囲(両端含む)の正の整数。