Sybase 12.7 manual Sybase IQ

Models: 12.7

1 212
Download 212 pages 60.16 Kb
Page 106
Image 106
Manual background

その他の OLAP の例

このクエリの結果セットを次に示します。

ID

description

quantity

ship_date

sum quantity

---

-----------

--------

---------

------------

302

Crew Neck

60

2001-07-02

60

400

Cotton Cap

60

2001-05-26

60

400

Cotton Cap

48

2001-07-05

108

401

Wool cap

48

2001-06-02

48

401

Wool cap

60

2001-06-30

108

401

Wool cap

48

2001-07-09

156

500

Cloth Visor

48

2001-06-21

48

501

Plastic Visor

60

2001-05-03

60

501

Plastic Visor

48

2001-05-18

108

501

Plastic Visor

48

2001-05-25

156

501

Plastic Visor

60

2001-07-07

216

601

Zipped Sweatshirt 60

2001-07-19

60

700

Cotton Shorts

72

2001-05-18

72

700

Cotton Shorts

48

2001-05-31

120

この例では、2 つのテーブルのジョインとクエリの WHERE 句を適用した後 に、SUM ウィンドウ関数の計算が行われます。このクエリではインラインの ウィンドウ指定を使用しており、このウィンドウ指定によって、ジョインから の入力ローが次のように処理されています。

1prod_id 属性の値に基づいて入力ローがパーティション ( グループ ) に分 けられます。

2各パーティション内で、ローが ship_date 属性に基づいてソートされます。

3パーティション内の各ローの quantity 属性について、SUM() 関数が評価さ れます。その際に、ソート後の各パーティションの最初のローから現在の ローまでを含む移動ウィンドウ ( 現在のローも含む ) が使用されます。詳 細については、4-3 (66 ページ ) を参照してください。

このクエリを別の方法で記述するには、関数の外でウィンドウを定義し、その ウィンドウを関数呼び出しから参照します。この方法は、同じウィンドウに基 づくウィンドウ関数を複数指定する場合に便利です。このウィンドウ関数を使 用するクエリを、独立したウィンドウ句を使用する方法で記述すると次のよう になります (cumulative というウィンドウを宣言しています )

SELECT p.id, p.description, s.quantity, s.ship_date, SUM(s.quantity) OVER(cumulative

ROWS BETWEEN UNBOUNDED PRECEDING

and CURRENT ROW

) AS cumulative qty

FROM sales_order_items s JOIN product p On (s.prod_id = p.id)

WHERE s.ship_date BETWEEN ‘2005-07-01’ and ‘2005-08-31’ Window cumulative as (PARTITION BY s.prod_id ORDER BY

s.ship date) ORDER BY p.id

90

Sybase IQ

Page 106
Image 106
Sybase 12.7 manual Sybase IQ