統計関数
74 Sybase IQ
• インラインのウィンドウ指定。クエリ式の 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 1984-08-28 45700.000 45700.000
100 Cobb 1985-01-01 62000.000 107700.000
100 Breault 1985-06-17 57490.000 165190.000
100 Shishov 1986-06-07 72995.000 238185.000
100 Driscoll 1986-07-01 48023.690 286208.690
100 Guevara 1986-10-14 42998.000 329206.690
100 Gowda 1986-11-30 59840.000 389046.690
100 Melkisetian 1986-12-06 48500.000 437546.690
100 Pastor 1987-04-26 74500.000 512046.690
100 Lull 1987-06-15 87900.000 599946.690
100 Rabkin 1987-06-15 64500.000 664446.690
100 Siperstein 1987-07-23 39875.500 704322.190
100 Scott 1987-08-04 96300.000 800622.190
100 Sullivan 1988-02-03 67890.000 868512.190
100 Samuels 1988-03-23 37400.000 905912.190
100 Wang 1988-09-29 68400.000 974312.190
100 Marshall 1989-04-20 42500.000 1016812.190
100 Soo 1990-07-31 39075.000 1055887.190
100 Diaz 1990-08-19 54900.000 1110787.190