Sybase IQ 12.7 User Manual

Page of 212
統計関数
 
80
 
Sybase IQ
ウィンドウ集合関数
ウィンドウ集合関数を使用すると、複数のレベルの集合を
 1 つのクエリで計算
できます。たとえば、支出が平均より少ない四半期をすべて列挙することがで
きます。集合関数
 (単純な集合関数 AVG、COUNT、MAX、MIN、SUM を含む )
を使用すると、
1 つの文の中でさまざまなレベルで計算した結果を 1 つのローに
書き出すことができます。これにより、ジョインや相関サブクエリを使用しな
くても、集合値をグループ内のディテール・ローと比較することができます。
これらの関数を使用して、非集合値と集合値を比較することも可能です。たと
えば、営業部員が特定の年にある製品に対して平均以上の注文を出した顧客の
一覧を作成したり、販売マネージャが従業員の給与をその部署の平均給与と比
較したりすることが考えられます。
SELECT 文の中で DISTINCT が指定されている場合は、ウィンドウ演算子の
後に
 DISTINCT 操作が適用されます ( ウィンドウ演算子は、GROUP BY 句が
処理された後、
SELECT リストの項目やクエリの ORDER BY 句が評価される
前に計算されます
)。
ウィンドウ集合関数の例
 1 
この例のクエリは、平均販売数よりも多く売れた製
品の一覧を年別に示す結果セットを返します。
SELECT * FROM (SELECT year(order_date) AS Y, prod_id,
SUM(quantity) AS Q,  CAST(AVG(SUM(quantity)) OVER
(PARTITION BY Y) AS numeric (8, 2)) AS Average 
FROM alt_sales_order S, alt_sales_order_items O 
WHERE S.id = O.id
GROUP BY Y, O.prod_id ) AS derived_table
WHERE Q > Average 
ORDER BY Y, prod_id;
このクエリの結果セットを次に示します。
Year
prod_id
Q
Average
----
-------
 ----
-------
2000
400
2030
1787.00
2000
600
2124
1787.00
2000
601
1932
1787.00
2000
700
2700
1787.00
2001
400
1248
1048.90
2001
401
1057
1048.90
2001
700
1836
1048.90
2000 年の平均注文数は 1,787 であり、4 つの製品 (700、601、600、400) が平均
を上回っています。
2001 年の平均注文数は 1,048 であり、3 つの製品が平均を
上回っています。