Manual background

統計関数

n FOLLOWING の指定には、次のような意味があります。

パーティションがデフォルトの昇順 (ASC) でソートされている場合は、n は正の値として解釈されます。

パーティションが降順 (DESC) でソートされている場合は、n は負の値と して解釈されます。

たとえば、year カラムに 1999 2002 4 種類の値が含まれているとします。 次のテーブルは、これらの値をデフォルトの昇順でソートした場合 ( 左側 ) と 降順でソートした場合 ( 右側 ) を示しています。

現在のローが 1999 で、フレームが次のように指定されている場合、このフレー ムには値 1999 のローと値 1998 のロー ( このテーブルには存在しません ) が含 まれます。

ORDER BY year ASC range BETWEEN CURRENT ROW and 1 FOLLOWING

注意 ORDER BY 値のソート順序は、値ベースのフレームに含まれるローの条 件をテストするときに重要な要素です。フレームに含まれるか除外されるか は、数値だけでは決まりません。

無制限ウィンドウの使用 次のクエリでは、すべての製品と全製品の総数から成 る結果セットが生成されます。

SELECT id, description, quantity,

SUM(quantity) OVER () AS total

FROM product;

隣接ロー間のデルタの計算 現在のローと前のローをそれぞれ 1 つのウィンドウ として定義し、この 2 つのウィンドウを使用すると、隣接するロー間のデルタ ( つまり差分 ) を直接的に計算することができます。次のクエリ例と結果を確 認してください。

SELECT emp_id, emp_lname, SUM(salary) OVER (ORDER BY birth_date rows between current row and current row) AS curr, SUM(salary) OVER (ORDER BY birth_date rows between 1 preceding and 1 preceding) AS prev, (curr -prev) as delta

FROM employee WHERE state IN ('MA', 'AZ') AND dept_id =100

ORDER BY emp_id, emp_lname;

72

Sybase IQ

Page 88
Image 88
Sybase 12.7 manual Sybase IQ