
統計関数
ウィンドウ集合関数
ウィンドウ集合関数を使用すると、複数のレベルの集合を 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 つの製品が平均を 上回っています。
80 | Sybase IQ |