User manual

4 OLAP の使用
パフォーマンス&チューニング・ガイド 71
このような範囲指定は内包的です。現在のローの year 値が 2000 である場合は、
ウィンドウパーティション内で、year 値が 2000 および 1999 であるすべての
ローがこのフレームに含まれることになります。パーティション内での各ロー
の物理的な位置は問われません。値ベースのフレームでは、ローを含めたり
除外したりする規則が、ローベースのフレームの規則とは大きく異なります
( ローベースのフレームの規則は、ローの物理的なシーケンスに完全に依存し
ています )
OLAP AVG() 関数の例で考えてみます。次の部分的な結果セットは、値ベー
スのウィンドウフレームの概念を具体的に表しています。前述のように、
のフレームには次のローが含まれます。
現在のローと同じ year 値を持つロー
現在のローから 1 を減算したのと同じ year 値を持つロー
次のクエリは、範囲ベースのウィンドウ・フレーム定義の例を示しています。
SELECT dimension, year, measure,
AVG(measure) OVER(PARTITION BY dimension
ORDER BY year ASC
range BETWEEN CURRENT ROW and 1 PRECEDING)
as olap_avg
FROM ...
平均値は次のようにして計算されています。
ロー [1] = 1999 のため、ロー [2] [5] は除外。したがって AVG = 10,000/1
ロー [2] = 2001 のため、ロー [1][4][5] は除外。したがって AVG = 6,000/2
ロー [3] = 2001 のため、ロー [1][4][5] は除外。したがって AVG = 6,000/2
ロー [4] = 2002 のため、ロー [1] は除外。したがって AVG = 21,000/4
ロー [5] = 2002 のため、ロー [1] は除外。したがって AVG = 21,000/4
値ベースのフレームの昇順と降順 値ベースのウィンドウ・フレームを使用す
OLAP 関数の ORDER BY 句では、範囲指定の対象となる数値カラムを特定す
るだけではなく、ORDER BY 値のソート順序も宣言できます。次の指定によ
り、直前の部分のソート順序 (ASC または DESC) を設定できます。
RANGE BETWEEN CURRENT ROW AND n FOLLOWING