AVG 集約関数

AVG 関数は、一連の数値の平均値を戻します。

構文図を読む構文図をスキップするAVG(ALLDISTINCTexpression)

スキーマは SYSIBM です。

expression
組み込みの数値またはブール値のセットを返す式。 AVG 関数では、入力式に含まれることがある NULL 値はすべて無視されます。
ALL または DISTINCT
ALL を指定すると、この式によって返される、重複値を含むすべての値が平均値の計算に使用されます (デフォルト)。 DISTINCT を指定すると、重複値が無視されます。 数値的に等しい 10 進浮動小数点値は、有効数字の桁数が異なっていても重複として扱われます。 例えば、式によって返される値セットに 10 進浮動小数点数 123、123.0、123.00 が含まれている場合、これらの値のいずれか 1 つのみが平均の計算に使用されます。

結果

結果のデータ・タイプは、入力式のデータ・タイプと同じです。ただし、以下の場合を除きます。
  • 入力式のデータ・タイプが BOOLEAN、SMALLINT、INTEGER、BIGINT のいずれかの場合、結果のデータ・タイプは DECIMAL(31,6) です。
  • 入力式のデータ・タイプが単精度浮動小数点 (REAL) の場合は、結果のデータ・タイプは倍精度浮動小数点 (DOUBLE) です。
  • 入力式のデータ・タイプが DECFLOAT(n) の場合、結果のデータ・タイプは DECFLOAT(34) です。

評価の際、入力値が加算される順序は定義されていませんが、すべての中間結果は結果のデータ・タイプの範囲内になければなりません。

結果は NULL になる場合があります。この関数が空のセットに適用されると、結果は NULL 値になります。そうでない場合、結果は対象セットの平均値になります。

  • 例 1: PROJECT 表を使用して、部門 (DEPTNO) D11 におけるプロジェクトの平均スタッフ数 (PRSTAFF) を、 ホスト変数 AVERAGE(decimal(5,2)) に設定します。
       SELECT AVG(PRSTAFF)
         INTO :AVERAGE
         FROM PROJECT
         WHERE DEPTNO = 'D11'

    サンプル表を使用してこの例を実行すると、結果として AVERAGE には、 4.25 (つまり、17/4) が設定されます。

  • 例 2: PROJECT 表を使用して、ホスト変数 ANY_CALC (decimal(5,2)) を、 部門 (DEPTNO) 'D11' の中でのプロジェクトのスタッフ・レベル (PRSTAFF) の固有値についての平均値に設定します。
       SELECT AVG(DISTINCT PRSTAFF)
         INTO :ANY_CALC
         FROM PROJECT
         WHERE DEPTNO = 'D11'

    サンプル表を使用してこの例を実行すると、 結果として ANY_CALC は 4.66 (つまり 14/3) に設定されます。