Sybase 12.7 用户手册

下载
页码 212
統計関数
 
70
 
Sybase IQ
平均値は次のようにして計算されています。
ロー
 [1] = (10 + 50 + 100)/3
ロー
 [2] = (50+ 100 + 120)/3
ロー
 [3] = (100 + 120 + 500)/3
ロー
 [4] = (120 + 500 + NULL)/3
ロー
 [5] = (500 + NULL + NULL)/3
結果セット内の以降のすべてのパーティション
 ( たとえば B、C など ) につい
ても、同様の計算が実行されます。
現在のウィンドウにローが含まれていない場合、
COUNT 以外のケースでは、
結果は
 NULL になります。
RANGE
範囲ベースのウィンドウ・フレーム 
前述の
例では、さまざまなローベースのウィンドウ・フレーム定義の中から
 1 つを紹
介しました。
SQL/OLAP 構文では、また別の種類のウィンドウ・フレームとし
て、物理的なローのシーケンスではなく、値ベース
 ( または範囲ベース ) の
ロー・セットに基づいて境界を定義する方法が用意されています。
値ベースのウィンドウ・フレームは、ウィンドウ・パーティション内で、特定
の範囲の数値を含んでいるローを定義します。
OLAP 関数の ORDER BY 句で
は、範囲指定を適用する数値カラムを定義します。このカラムの現在のローの
値が、範囲指定の基準となります。範囲指定ではロー指定と同じ構文を使用し
ますが、構文の解釈の仕方は異なります。
ウィンドウ・フレーム単位
 RANGE では、特定の順序付けカラムについて現在
のローを基準とする値範囲を指定し、その範囲内の値を持つローを検索して、
ウィンドウ・フレームに含めます。これは論理的なオフセットに基づくウィン
ドウ・フレームと呼ばれ、
“3 preceding” などの定数を指定することも、評価結
果が数値定数となる任意の式を指定することもできます。
RANGE に基づく
ウィンドウを使用するときは、
ORDER BY 句に数値式を 1 つだけ指定します。
たとえば、次のように指定すると、
year カラムに現在のローの前後数年に当た
る値を含んでいるロー・セットをフレームとして定義できます。
ORDER BY year ASC range BETWEEN CURRENT ROW and 1 PRECEDING
このクエリ例の
 1 PRECEDING という部分は、現在のローの year 値から 1 を減
算することを意味しています。