例:1 つのクエリ内で複数の集合関数を使用

その他の OLAP の例

例: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

94

Sybase IQ

Page 110
Image 110
Sybase 12.7 例:1 つのクエリ内で複数の集合関数を使用, 例:ウィンドウ・フレーム指定の Rows と Range の比較, Sybase IQ, その他の Olap の例, prod_id, month_num, sales