集約値の計算
SQL 集約関数を使用して、データ列全体に基づいて値を計算することができます。 計算値は、WHERE 文節の条件を満たす行のみ、つまり、選択された行のみが元になっています。
集約関数 とは、1 つ以上の行の値を使用して、その結果を導出する演算操作です。 集約関数は列関数 とも呼ばれます。 集約関数の引数は、式から得られる値の集合です。
使用できる集約関数を以下に示します。
- SUM
- 合計値を戻します。
- MIN
- 最小値を返します。
- AVG
- 平均値を戻します。
- MAX
- 最大値を返します。
- COUNT
- 選択された行の数を戻します。
- COUNT_BIG
- 一連の行または値の中の、行または値の数を戻します。 この関数の結果が、整数の最大値よりも大きくなることがあります。
- XMLAGG
- XML エレメントの集合から XML エレメントの連結を戻します。
SUM と AVG は数値に対してのみ使用できます。 MIN、MAX、COUNT、および COUNT_BIG は組み込みデータ・タイプに使用できます。
例
- 例 1
- 以下の照会では、部門 A00 の従業員給与の合計、給与の最低額、平均額、および最高額、およびこの部門の従業員数を計算します。
SELECT SUM(SALARY) AS SUMSAL, MIN(SALARY) AS MINSAL, AVG(SALARY) AS AVGSAL, MAX(SALARY) AS MAXSAL, COUNT(*) AS CNTSAL FROM EMP WHERE DEPT = 'A00';結果の表は、次のようになります。
SUMSAL MINSAL AVGSAL MAXSAL CNTSAL ========= ======== ============== ======== ====== 128500.00 29250.00 42833.33333333 52750.00 3 - 例 2
- COUNT 関数と COUNT_BIG 関数では (*) を使用できます。 この例では、 COUNT(*) は、 Db2 が WHERE 文節に基づいて処理する行を戻します。 以下の照会では、EMP 表に記述された従業員の数をカウントします。
SELECT COUNT(*) FROM EMP; - 例 3
- SUM、AVG、COUNT、および COUNT_BIG 関数では DISTINCT を使用できます。 DISTINCT は、選択された関数が列の固有値に対してのみ実行されたことを意味します。 以下の照会では、EMP 表にある異なるジョブの数をカウントします。
SELECT COUNT(DISTINCT JOB) FROM EMP;COUNT などの集約関数は、操作対象の値の NULL は無視します。 前述の例では、NULL 以外の固有なジョブ値をカウントします。
注: MAXおよびMIN関数ではDISTINCTを使用しないでください。なぜなら、それらの関数の結果に影響を与えないからです。