Sybase 12.7 Home Theater System User Manual


 
統計関数
80 Sybase IQ
ウィンドウ集合関数
ウィンドウ集合関数を使用すると、複数のレベルの集合を 1 つのクエリで計算
できます。たとえば、支出が平均より少ない四半期をすべて列挙することがで
きます。集合関数 (単純な集合関数 AVGCOUNTMAXMINSUM を含む )
を使用すると、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 つの製品 (700601600400) が平均
を上回っています。2001 年の平均注文数は 1,048 であり、3 つの製品が平均を
上回っています。