例: 派生テーブルを使用したGROUP BY TIME - 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 TIMEクエリーにはタイムコード列を推測するための単一のPTIテーブルがあるため、USING TIMECODE句は必要ありません。ただし、派生テーブル(min_temp)はPTIテーブルではなく、推測できるタイムコード列はないため、外側のGROUP BY TIMEクエリーにはUSING TIMECODE句が必要です。

SELECT AVG(min_temp)
FROM
(
  SELECT MIN(temperature)
  FROM OCEAN_BUOYS
  GROUP BY TIME(minutes(1) AND BUOYID) 
) AS "inner" (min_temp)
GROUP BY TIME(minutes(10)); 

*** Failure 4359 Time Series: GROUP BY TIME clause may not be used without a TIMECODE specification.

次の例では、USING句を使用して、外側のブロックの派生テーブルから派生したTD_TIMECODEを指定します。

SELECT AVG(min_temp)
FROM
(
   SELECT MIN(temperature), BEGIN($td_timecode_range) d1
   FROM OCEAN_BUOYS
   GROUP BY TIME(minutes(1))
) AS "inner" (min_temp, td_timecode)
GROUP BY TIME(minutes(10)) USING TIMECODE(td_timecode);

*** Failure 3706 Syntax error: 
Virtual columns $TD_TIMECODE_RANGE and $TD_GROUP_BY_TIME are not allowed in the GROUP BY TIME clause.