AVG関数 (指定のカラムに格納されている値の平均値を取得する)

広告
eyecatch

AVG 関数を使うと引数に指定したカラムに格納されている値の平均値を取得します。 GROUP BY 句と組み合わせることでグループ単位で平均値を取得することができます。ここでは AVG 関数の使い方について解説します。

AVG 関数の使い方

AVG 関数は引数に指定したカラムに格納されている値の平均値を取得するために使用します。書式は次の通りです。

AVG([DISTINCT] expr)

平均値を取得するカラム名を引数で指定してください。 DISTINCT を指定すると、重複している値を除外して平均値を取得します。

-- --

それでは実際に試してみます。次のようなテーブルを作成しました。

create table pointnote (classname varchar(10), name varchar(10), point int);

MySQL/AVG 関数の使い方(1)

テーブルには次のようなデータを格納しました。

insert into pointnote values ('A', 'Yamada', 72);
insert into pointnote values ('A', 'Suzuki', 82);
insert into pointnote values ('B', 'Togawa', 76);
insert into pointnote values ('A', 'Honda', 90);
insert into pointnote values ('B', 'Nishi', 68);
insert into pointnote values ('B', 'Endou', 82);

MySQL/AVG 関数の使い方(2)

最初に point カラムに格納されている値の平均値を全データを対象にして取得します。次のように実行してください。

select avg(point) from pointnote;

MySQL/AVG 関数の使い方(3)

実際に計算してみると (72+82+76+90+68+82)/6 = 470/6 = 78.3333 となり取得した値と一致しています。

次に重複した値を除外して point カラムに格納されている値の平均値を全データを対象にして取得します。次のように実行してください。

select avg(distinct point) from pointnote;

MySQL/AVG 関数の使い方(4)

実際に計算してみると (72+82+76+90+68)/5 = 388/5 = 77.6 となり取得した値と一致しています。

次に GROUP BY 句を使って classname カラムの値を対象としてグループ化を行い、グループ毎に point カラムに格納されている値の平均値を取得します。次のように実行してください。

select classname, avg(point) from pointnote group by classname;

MySQL/AVG 関数の使い方(5)

グループ毎に平均値を取得することができました。

※ GROUP BY句については「データをグループ化する(GROUP BY句)」を参照されてください。

-- --

avg 関数の使い方について解説しました。

MySQLの使い方の他の記事を見てみる

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。