Sybase IQ 12.7 User Manual

Page of 212
 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