Sybase 12.7 manual Range, Sybase IQ

Models: 12.7

1 212
Download 212 pages 60.16 Kb
Page 86
Image 86
RANGE

統計関数

平均値は次のようにして計算されています。

ロー [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

結果セット内の以降のすべてのパーティション ( たとえば BC など ) につい ても、同様の計算が実行されます。

現在のウィンドウにローが含まれていない場合、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

Page 86
Image 86
Sybase 12.7 manual Range, Sybase IQ