統計関数
•インラインのウィンドウ指定。クエリ式の SELECT リスト内でウィンド ウを定義します。これにより、HAVING 句の後のウィンドウ句でウィンド ウを定義し、それをウィンドウ関数呼び出しから名前で参照するという方 法に加えて、関数呼び出しと一緒にウィンドウを定義するという方法が可 能になります。
注意 インラインのウィンドウ指定を使用する場合は、ウィンドウの名前 を指定できません。1 つの SELECT リスト内で複数のウィンドウ関数呼 び出しが同じウィンドウを使用する場合には、ウィンドウ句で定義した名 前付きウィンドウを参照するか、インラインのウィンドウ定義を繰り返す 必要があります。
ウィンドウ関数の例 ウィンドウ関数の例を次に示します。このクエリでは、デー タを部署別のパーティションに分け、在社年数が最も長い従業員を基点とした従 業員の累積給与を計算して、結果セットを返します。この結果セットには、マサ チューセッツ在住の従業員だけが含まれます。Sum_Salary カラムには、従業員 の給与の累積和が含まれます。
SELECT dept_id, emp_lname, start_date, salary, SUM(salary) OVER (PARTITION BY dept_id ORDER BY start_date rows between unbounded preceding and current row) AS sum_salary
FROM employee
WHERE state IN ('MA') AND dept_id IN (100, 200) ORDER BY dept_id;
次の結果セットは部署別に分割されています。
dept_id | emp_lname | start_date | salary | sum_salary |
100 | Whitney | 45700.000 | 45700.000 | |
100 | Cobb | 62000.000 | 107700.000 | |
100 | Breault | 57490.000 | 165190.000 | |
100 | Shishov | 72995.000 | 238185.000 | |
100 | Driscoll | 48023.690 | 286208.690 | |
100 | Guevara | 42998.000 | 329206.690 | |
100 | Gowda | 59840.000 | 389046.690 | |
100 | Melkisetian | 48500.000 | 437546.690 | |
100 | Pastor | 74500.000 | 512046.690 | |
100 | Lull | 87900.000 | 599946.690 | |
100 | Rabkin | 64500.000 | 664446.690 | |
100 | Siperstein | 39875.500 | 704322.190 | |
100 | Scott | 96300.000 | 800622.190 | |
100 | Sullivan | 67890.000 | 868512.190 | |
100 | Samuels | 37400.000 | 905912.190 | |
100 | Wang | 68400.000 | 974312.190 | |
100 | Marshall | 42500.000 | 1016812.190 | |
100 | Soo | 39075.000 | 1055887.190 | |
100 | Diaz | 54900.000 | 1110787.190 |
74 | Sybase IQ |