ウィンドウ指定で指定するソート順序によって関数の適用対象の行に対するソート順序が定義されますが、それによって結果の順序が定義されるわけではありません。
例えば、現行月から後の月の平均売上げを計算するには、次のように行を月別に順序付けします。
SELECT StoreID, SMonth, ProdID, Sales, AVG(Sales) OVER (PARTITION BY StoreID ORDER BY SMonth ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING) FROM sales_tbl; StoreID SMonth ProdID Sales Remaining Avg(Sales) ------- ------ ------ --------- -------------------- 1001 6 C 30000.00 ? 1001 5 C 30000.00 30000.00 1001 4 C 25000.00 30000.00 1001 3 C 40000.00 28333.33 1001 2 C 25000.00 31250.00 1001 1 C 35000.00 30000.00
計算でのデフォルトの並替え順序はASCです。しかし結果は、その逆の順序で戻されます。
結果を順序付けするには、SELECT文でORDER BY句を使用します。 例えば、
SELECT StoreID, SMonth, ProdID, Sales, AVG(Sales) OVER (PARTITION BY StoreID ORDER BY SMonth ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING) FROM sales_tbl ORDER BY SMonth; StoreID SMonth ProdID Sales Remaining Avg(Sales) ------- ------ ------ --------- -------------------- 1001 1 C 35000.00 30000.00 1001 2 C 25000.00 31250.00 1001 3 C 40000.00 28333.33 1001 4 C 25000.00 30000.00 1001 5 C 30000.00 30000.00 1001 6 C 30000.00 ?