Sybase 12.7 Home Theater System User Manual


 
その他の 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