Sybase 12.7 Home Theater System User Manual


 
その他の OLAP の例
94 Sybase IQ
例: 1 つのクエリ内で複数の集合関数を使用
この例では、1 つのクエリ内で、異なるウィンドウに対して 2 種類の集合関数
を実行しています。
SELECT prod_id, month_num, sales, AVG(sales) OVER
(WS1 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS
CAvg, SUM(sales) OVER(WS1 ROWS BETWEEN UNBOUNDED
PRECEDING AND CURRENT ROW) AS CSum
FROM sale WHERE rep_id = 1 WINDOW WS1 AS (PARTITION BY
prod_id
ORDER BY month_num)
ORDER BY prod_id, month_num;
このクエリの結果セットを次に示します。
prod_id month_num sales CAvg CSum
------- --------- ----- ---- ----
10 1 100 110.00 100
10 2 120 106.66 220
10 3 100 116.66 320
10 4 130 116.66 450
10 5 120 120.00 570
10 6 110 115.00 680
20 1 20 25.00 20
20 2 30 25.00 50
20 3 25 28.33 75
20 4 30 28.66 105
20 5 31 27.00 136
20 6 20 25.50 156
30 1 10 10.50 10
30 2 11 11.00 21
30 3 12 8.00 33
30 4 1 6.50 34
例: ウィンドウ・フレーム指定の ROWS RANGE の比較
このクエリでは、ROWS RANGE を比較しています。ORDER BY 句の指定
により、このデータには重複するローが含まれています。
SELECT prod_id, month_num, sales, SUM(sales) OVER
(ws1 RANGE BETWEEN 2 PRECEDING AND CURRENT ROW) AS
Range_sum, SUM(sales) OVER
(ws1 ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS
Row_sum
FROM sale window ws1 AS (PARTITION BY prod_id ORDER BY
month_num)
ORDER BY prod_id, month_num;
このクエリの結果セットを次に示します。
prod_id month_num sales Range_sum Row_sum
------- --------- ----- ---------- -------
10 1 100 250 100