avg関数

広告

avg関数は値の平均を取得するために使用します。書式は次の通りです。

avg(カラム名)

引数に指定したカラムに含まれている値の中でNULL以外の値の平均を返します。もし対象のカラムの値がNULLだけだった場合は、avg関数はNULLを返します。GROUP BY句が使われている場合はグループ毎に平均が計算されます。

対象のカラムに文字列などが含まれていた場合、数値に変換できない文字列などは0として計算します。

具体的には次のように使用します。

create table pointtable(name text, point integer);

select avg(point) from pointtable;

このSELECT文では「point」カラムに含まれる値の平均を取得します。

サンプル

では実際に試してみます。

次のようなデータが格納されたテーブルを対象にします。

p3-1

現時点でデータは1行だけです。また「point」カラムの値はNULLとなっています。ではavg関数と「point」カラムの値の平均を取得してみます。

select avg(point) from pointtable;

p3-2

対象のカラムにNULLしか格納されていなかった場合、avg関数はNULLを返します。

ではデータをいくつか追加してみます。

p3-3

改めて「point」カラムの値の平均を取得します。

p3-4

平均を求める時には、対象のカラムにNULLが含まれていないカラムの合計を出し、NULLが含まれていないカラムの行数で割って計算します。

文字列が含まれていた場合

NULLではないけれど数値に変換できないような文字列が対象のカラムに含まれていた場合を考えてみます。

p3-5

平均を求めるカラムに文字列が含まれたいた場合、値は0として計算されます。また平均を求める計算式の行数にもカウントされます。では改めて「point」カラムの値の平均を取得します。

p3-6

この場合は (50 + 80 + 35 + 0)÷4=41.25 となります。

( Written by Tatsuo Ikura )