•現在のローと同じ year 値を持つロー

4 OLAP の使用

このような範囲指定は内包的です。現在のローの 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

パフォーマンス&チューニング・ガイド

71

Page 87
Image 87
Sybase 12.7 manual 現在のローと同じ year 値を持つロー, パフォーマンス&チューニング・ガイド