集約を同じSELECTリストにまとめて指定するのに使用できるのはウィンドウ関数のみですが、派生テーブルまたはビューを使用して、ウィンドウ関数とTeradata固有の関数を集約と組み合わせることができます。派生テーブルまたはビューを使用すると、計算の意味体系を明確にすることにもなります。
例
以下の例は、店舗内の特定の製品の売上げ順位と、各店舗のトップ3の製品が店舗売上げ全体に占める割合を示したものです。
SELECT RT.storeid, RT.prodid, RT.sales, RT.rank_sales, RT.sales * 100.0/ST.sum_store_sales FROM (SELECT storeid, prodid, sales, RANK(sales) AS rank_sales FROM sales_tbl GROUP BY storeID QUALIFY RANK(sales) <=3) AS RT, (SELECT storeID, SUM(sales) AS sum_store_sales FROM sales_tbl GROUP BY storeID) AS ST WHERE RT.storeID = ST.storeID ORDER BY RT.storeID, RT.sales;
結果のテーブルは、例えば以下のようになります。
storeID | prodID | sales | rank_sales | sales*100.0/sum_store_sales |
---|---|---|---|---|
1001 | D | 35000.00 | 3 | 17.949 |
1001 | C | 60000.00 | 2 | 30.769 |
1001 | A | 100000.00 | 1 | 51.282 |
1002 | D | 25000.00 | 3 | 25.000 |
1002 | C | 35000.00 | 2 | 35.000 |
1002 | A | 40000.00 | 1 | 40.000 |
1003 | C | 20000.00 | 3 | 20.000 |
1003 | A | 30000.00 | 2 | 30.000 |
1003 | D | 50000.00 | 1 | 50.000 |
..。 | ..。 | ..。 | ..。 |