sales_tblという名前の以下の売上テーブルを取り上げます。
Store | ProdID | sales |
---|---|---|
1003 | C | 20000.00 |
1003 | D | 50000.00 |
1003 | A | 30000.00 |
1002 | C | 35000.00 |
1002 | D | 25000.00 |
1002 | A | 40000.00 |
1001 | C | 60000.00 |
1001 | D | 35000.00 |
1001 | A | 100000.00 |
1001 | B | 10000.00 |
ここで、このテーブルに対して以下のシンプルなSELECT文を実行し、順位によって応答行を限定します。
SELECT store, prodID, sales, RANK() OVER (PARTITION BY store ORDER BY sales DESC) FROM sales_tbl QUALIFY RANK() OVER (PARTITION BY store ORDER BY sales DESC) <=3;
結果は、以下のような典型的な出力テーブルになります。
Store | ProdID | sales | Rank(Sales) |
---|---|---|---|
1001 | A | 100000.00 | 1 |
1001 | C | 60000.00 | 2 |
1001 | D | 35000.00 | 3 |
1002 | A | 40000.00 | 1 |
1002 | C | 35000.00 | 2 |
1002 | D | 25000.00 | 3 |
1003 | D | 50000.00 | 1 |
1003 | A | 30000.00 | 2 |
1003 | C | 20000.00 | 3 |
このように、QUALIFY句の条件(売上げの順位が店舗内の3位より下)に適合しない行を除き、テーブル内のすべての行にはRANKの計算値が戻されています。