例: EXPAND ONおよびスパン グループ - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/vnq1596660420420.ditamap
dita:ditavalPath
ja-JP/vnq1596660420420.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage

この例では、選択リストのエントリのスパンをグループ化するEXPAND ON句の使用方法を示します。

まず、stockテーブルを作成します。

     CREATE SET TABLE stock (
       stock_id        INTEGER,
       stock_quantity  INTEGER,
       begin_end_date  PERIOD(DATE))
     PRIMARY INDEX (stockid);

stock tableテーブルには、次の行が含まれます。

stock_id stock_quantity begin_end_date
100 200 2005-10-10,2005-11-15
101 20 2005-06-01,2005-08-31

この例は、毎月行なうstock_quantity列の重み付きの平均を計算する方法を示しています。

udf_agspanは集約UDFで、ある年の指定の月の在庫数を追加し、その合計をその月の日数で割るものと仮定します。行が月全体に広がっていないと、AVG関数と比較した場合に異なる結果を提供します。

     SELECT udf_agspan(stock_quantity,
            EXTRACT(YEAR FROM BEGIN(expdcol)),
            EXTRACT(MONTH FROM BEGIN(expdcol)))
            (FORMAT ‘-----9.999’) AS wavg,
            EXTRACT(YEAR FROM BEGIN(expdcol) AS yr,
            EXTRACT(MONTH FROM BEGIN(expdcol) AS mn,
            stock_id
     FROM (SELECT stock.*, expdcol
           FROM stock
           EXPAND ON begin_end_date AS expdcol BY INTERVAL '1'DAY) AS dt
     GROUP BY 2,3,4;

この文は、次の行を返します。

wavg yr mn stock_id
141.935 2005 10 100
93.333 2005 11 100
20.000 2005 06 101
20.000 2005 07 101
19.355 2005 08 101