Sybase IQ 12.7 User Manual

Page of 212
統計関数
 
72
 
Sybase IQ
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;