構文 AVG ( [ DISTINCT | ALL ] 式 )
DISTINCTqualifier
in AVG functionDISTICTを指定すると、重複が取り除かれます。
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)