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

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

(Last modified: )

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 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。