![例:複数の関数で使用されるウィンドウ](/images/new-backgrounds/25485/25485213x1.webp)
第 4 章 OLAP の使用
このクエリ指定では、ウィンドウ句が ORDER BY 句の前にあることに注意し てください。ウィンドウ句を使用するときには、次の制限が適用されます。
•インラインのウィンドウ指定に PARTITION BY 句を含めることはできま せん。
•ウィンドウ句で指定されるウィンドウにウィンドウ・フレーム句を含める ことはできません。たとえば、「文法規則 32」(100 ページ ) に次のように 記述されています。
<WINDOW FRAME CLAUSE> ::=
<WINDOW FRAME UNIT> <WINDOW FRAME EXTENT>
•インラインのウィンドウ指定にもウィンドウ句のウィンドウ指定にも ウィンドウ順序句を含めることができますが、両方に含めることはできま せん。たとえば、「文法規則 31」(100 ページ ) に次のように記述されてい ます。
<WINDOW ORDER CLAUSE> ::= <ORDER SPECIFICATION>
例:複数の関数で使用されるウィンドウ
1つの名前付きウィンドウを定義しておき、そのウィンドウに基づいて複数の 関数を計算することもできます。具体的な例を次に示します。
SELECT p.id, p.description, s.quantity, s.ship_date, SUM(s.quantity) OVER ws1, MIN(s.quantity) OVER ws1
FROM sales_order_items s JOIN product p ON (s.prod_id = p.id) WHERE s.ship_date BETWEEN
ORDER BY p.id;
このクエリの結果セットを次に示します。
ID | description | quantity | ship_date | sum | min | |
302 | Crew Neck |
| 60 | 60 | 60 | |
400 | Cotton Cap |
| 60 | 60 | 60 | |
400 | Cotton Cap |
| 48 | 48 | ||
401 | Wool cap |
| 48 | 48 | 48 | |
401 | Wool cap |
| 60 | 48 | ||
401 | Wool cap |
| 48 | 48 | ||
500 | Cloth Visor |
| 48 | 48 | 48 | |
501 | Plastic Visor |
| 60 | 60 | 60 | |
501 | Plastic Visor |
| 48 | 48 | ||
501 | Plastic Visor |
| 48 | 48 | ||
501 | Plastic Visor |
| 60 | 48 | ||
601 | Zipped Sweatshirt | 60 | 60 | 60 | ||
700 | Cotton Shorts |
| 72 | 72 | 72 | |
700 | Cotton Shorts |
| 48 | 120 | 48 |
パフォーマンス&チューニング・ガイド | 91 |