その他の OLAP の例
このクエリの結果セットを次に示します。
ID | description | quantity | ship_date | sum quantity |
302 | Crew Neck | 60 | 60 | |
400 | Cotton Cap | 60 | 60 | |
400 | Cotton Cap | 48 | 108 | |
401 | Wool cap | 48 | 48 | |
401 | Wool cap | 60 | 108 | |
401 | Wool cap | 48 | 156 | |
500 | Cloth Visor | 48 | 48 | |
501 | Plastic Visor | 60 | 60 | |
501 | Plastic Visor | 48 | 108 | |
501 | Plastic Visor | 48 | 156 | |
501 | Plastic Visor | 60 | 216 | |
601 | Zipped Sweatshirt 60 | 60 | ||
700 | Cotton Shorts | 72 | 72 | |
700 | Cotton Shorts | 48 | 120 |
この例では、2 つのテーブルのジョインとクエリの WHERE 句を適用した後 に、SUM ウィンドウ関数の計算が行われます。このクエリではインラインの ウィンドウ指定を使用しており、このウィンドウ指定によって、ジョインから の入力ローが次のように処理されています。
1prod_id 属性の値に基づいて入力ローがパーティション ( グループ ) に分 けられます。
2各パーティション内で、ローが ship_date 属性に基づいてソートされます。
3パーティション内の各ローの quantity 属性について、SUM() 関数が評価さ れます。その際に、ソート後の各パーティションの最初のローから現在の ローまでを含む移動ウィンドウ ( 現在のローも含む ) が使用されます。詳 細については、図
このクエリを別の方法で記述するには、関数の外でウィンドウを定義し、その ウィンドウを関数呼び出しから参照します。この方法は、同じウィンドウに基 づくウィンドウ関数を複数指定する場合に便利です。このウィンドウ関数を使 用するクエリを、独立したウィンドウ句を使用する方法で記述すると次のよう になります (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
s.ship date) ORDER BY p.id
90 | Sybase IQ |