# AVG関数

AVGは複数行にわたる式の平均を評価する集約関数です。(集約 (集合関数)を参照してください。) AVGは数値型に評価される式に対してのみ作用させることができます。

#### 構文

    AVG ( [ DISTINCT | ALL ] 式 )

DISTICTを指定すると、重複が取り除かれます。 ALLを指定すると、重複を残します。ALLもDISTINCTも指定されない場合の既定はALLです。 例えば、列の値が1.0、1.0、1.0、1.0、2.0だったとします。この場合、AVG(col)はAVG(DISTINCT col)より小さな値を返します。

DISTINCTな集約式は、選択式に一つだけ置くことができます。 例えば、次の問合せは無効です。

    SELECT AVG (DISTINCT flying_time), SUM (DISTINCT miles)
    FROM Flights

式には複数列への参照や式があってかまいませんが、他の集約や副問合せがあってはなりません。 また評価結果はSQL-92の数値型でなければなりません。したがってSQL-92の型に評価される関数なら呼ぶことができます。もし評価結果がNULLであった場合、集約にてその値は省かれます。

結果のデータ型は操作される式と同じデータ型です。(オーバーフローはありません) 例えば次の問合せは予想に反して整数の1を返します。

    SELECT AVG(c1)
    FROM (VALUES (1), (1), (1), (1), (2)) AS myTable (c1)

より精度が必要であれば、式をキャストします。

    SELECT AVG(CAST (c1 AS DOUBLE PRECISION))
    FROM (VALUES (1), (1), (1), (1), (2)) AS myTable (c1)

親トピック: 組み込み関数