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クエリーにはタイムコード列を推測するための単一の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.