Sybase 12.7 Manual De Usuario

Descargar
Página de 212
その他の
 OLAP の例 
92
 
Sybase IQ
例:
 累積和の計算
このクエリでは、
ORDER BY start_date の順序に従って、部署別の給与の累
積和を計算します。
SELECT dept_id, start_date, name, salary,
SUM(salary) OVER (PARTITION BY dept_id ORDER BY
start_date ROWS BETWEEN UNBOUNDED PRECEDING AND
CURRENT ROW) 
FROM emp1 
ORDER BY dept_id, start_date;
このクエリの結果セットを次に示します。
dept_id
start_date
name
salary
sum(salary)
-------
----------
----
------
-----------
100
1996-01-01
Anna
18000
18000
100
1997-01-01
Mike
28000
46000
100
1998-01-01
Scott
29000
75000
100
1998-02-01
Antonia
22000
97000
100
1998-03-12
Adam
25000
 122000
100
1998-12-01
Amy
18000
140000
200
1998-01-01
Jeff
18000
 18000
200
1998-01-20
Tim
29000
47000
200
1998-02-01
Jim
22000
69000
200
1999-01-10
Tom
28000
97000
300
1998-03-12
Sandy
55000
55000
300
1998-12-01
Lisa
38000
93000
300
1999-01-10
Peter
48000
141000
例:
 移動平均の計算
このクエリでは、連続する
 3 か月間の売上の移動平均を計算します。使用する
ウィンドウ・フレームは
 3 つのローから成り、先行する 2 つのローと現在の
ローが含まれます。このウィンドウは、パーティションの最初から最後までス
ライドしていきます。
SELECT prod_id, month_num, sales, AVG(sales) OVER
(PARTITION BY prod_id ORDER BY month_num ROWS
BETWEEN 2 PRECEDING AND CURRENT ROW) 
FROM sale WHERE rep_id = 1 
ORDER BY prod_id, month_num;
このクエリの結果セットを次に示します。
prod_id
month_num
sales
avg(sales)
-------
---------
------
----------
10
1
100
100.00
10
2
120
110.00
10
3
100
106.66
10
4
130
116.66
10
5
120
116.66