
統計関数
平均値は次のようにして計算されています。
•ロー [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 を減 算することを意味しています。
70 | Sybase IQ |