統計関数
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
FROM employee WHERE state IN ('MA', 'AZ') AND dept_id =100
ORDER BY emp_id, emp_lname;
72 | Sybase IQ |