PARTITION BYに列参照リストを指定すると、指定された列参照リスト(順序付き分析関数の実行対象)に基づいて行がグループ化されます。このようなグループ化は静的になります。条件に基づいたグループやパーティションを定義する場合は、RESET WHEN句を使用します。詳細は、RESET WHEN句を参照してください。
PARTITION BY句またはRESET WHEN句を指定しない場合は、FROM句から送られる単一のパーティションで構成された結果セット全体が、順序付き分析関数の実行対象になります。
sales_tblという名前の以下のテーブルを取り上げます。
StoreID | SMonth | ProdID | sales |
---|---|---|---|
1001 | 1 | C | 35000.00 |
1001 | 2 | C | 25000.00 |
1001 | 3 | C | 40000.00 |
1001 | 4 | C | 25000.00 |
1001 | 5 | C | 30000.00 |
1001 | 6 | C | 30000.00 |
1002 | 1 | C | 40000.00 |
1002 | 2 | C | 35000.00 |
1002 | 3 | C | 110000.00 |
1002 | 4 | C | 60000.00 |
1002 | 5 | C | 35000.00 |
1002 | 6 | C | 100000.00 |
PARTITION BYを含まない次のSELECT文は、このテーブルのすべての店舗の平均売上げを計算します。
SELECT StoreID, SMonth, ProdID, Sales, AVG(Sales) OVER () FROM sales_tbl; StoreID SMonth ProdID Sales Group Avg(Sales) ------- ------ ------ --------- ---------------- 1001 1 C 35000.00 47083.33 1001 2 C 25000.00 47083.33 1001 3 C 40000.00 47083.33 1001 4 C 25000.00 47083.33 1001 5 C 30000.00 47083.33 1001 6 C 30000.00 47083.33 1002 1 C 40000.00 47083.33 1002 2 C 35000.00 47083.33 1002 3 C 110000.00 47083.33 1002 4 C 60000.00 47083.33 1002 5 C 35000.00 47083.33 1002 6 C 100000.00 47083.33
店舗ごとの平均売上げを計算するには、sales_tblのデータを次のようにStoreIDごとに区分します。
SELECT StoreID, SMonth, ProdID, Sales, AVG(Sales) OVER (PARTITION BY StoreID) FROM sales_tbl; StoreID SMonth ProdID Sales Group Avg(Sales) ------- ------ ------ --------- ---------------- 1001 3 C 40000.00 30833.33 1001 5 C 30000.00 30833.33 1001 6 C 30000.00 30833.33 1001 4 C 25000.00 30833.33 1001 2 C 25000.00 30833.33 1001 1 C 35000.00 30833.33 1002 3 C 110000.00 63333.33 1002 5 C 35000.00 63333.33 1002 6 C 100000.00 63333.33 1002 4 C 60000.00 63333.33 1002 2 C 35000.00 63333.33 1002 1 C 40000.00 63333.33