17.00 - 17.05 - ビュー上の結合と集約 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Release Date
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1184-170K-JPN
Language
日本語 (日本)

カウントの平均値と最大値、および合計を含むレポートを、一連の時刻について宛先ごとに作成します。このレポートの目的は、宛先ごとに利益の潜在的な損失を判別することです。

ビューloss_summary_viewを作成します。

     CREATE VIEW loss_summary_view (week, from_code, to_code, count_a,
                                    sum_x, sum_y, sum_z)
     AS SELECT c.week, h.from_code, h.to_code, COUNT(h.a),SUM(h.x),                SUM(h.y), SUM(h.z)
        FROM history AS h, calendar AS c
        WHERE c.month = 100610
        AND   c.day = h.day
        GROUP BY 1, 2, 3 ;

loss_summary_viewを使用してレポートを作成するSELECTリクエストは、以下のように表示されます。

     SELECT lsv.week, ld.to_location, AVG(lsv.count_a),             MAX(lsv.count_a),AVG(lsv.sum_x), MAX(lsv.sum_x),             AVG(lsv.sum_y), MAX(lsv.sum_y), AVG(lsv.sum_z),
            MAX(lsv.sum_z)
     FROM  loss_summary_view AS lsv, location_description AS ld
     WHERE lsv.to_code = ld.to_code
     GROUP BY 1, 2;

この例では、cust_fileテーブルを集約ビューcust_prod_salesビューに結合して、品目123の購入金額が$10,000を超えた会社を判別します。

     CREATE VIEW cust_prod_sales (custno, pcode, sales)
     AS SELECT custno, pcode, SUM(sales)
        FROM sales_hist
        GROUP BY custno, pcode;

cust_prod_salesを使用してレポートを作成するSELECTリクエストは、以下のように表示されます。

     SELECT company_name, sales
     FROM cust_prod_sales AS a, cust_file AS b
     WHERE a.custno = b.custno
     AND   a.pcode = 123
     AND   a.sales > 10000;