[MySQL] AVGを使ってグループごとの平均値を求める方法

MySQLで平均値を求めるにはAVGを使います。基本的な構文である 「SELECT カラム名 FROM テーブル名」 のカラム名をAVG(カラム名)に変更するだけで、指定したカラムの平均値が算出されます。
今回は全体の平均を算出した後で、グループごとの平均値を算出していきます。

テーブルとデータの準備

「test」テーブルを作成します。カラムは「subject」「score」の2つ。

CREATE TABLE `test` (
  `subject` varchar(20) NOT NULL,
  `score` int(3) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

データをINSERTします。科目名と点数です。
INSERT INTO `test` (`subject`, `score`) VALUES
('国語', 100),
('数学', 78),
('英語', 65),
('国語', 90),
('数学', 95),
('英語', 88),
('国語', 39),
('数学', 59),
('英語', 77);

全データの表示

INSERTしたデータを表示してみます。

SELECT * FROM test

全データが表示されました。
MySQL 全データ 教科点数

全平均値の取得

今回は「score」カラムの合計値を出したいので、scoreをAVG()で囲みます。

SELECT AVG(score) FROM test

全体の平均値が取得されました。
MySQL AVG 総平均

教科別の平均値の取得

GROUP BYに「subject」を指定し、科目別の平均値を取得してみます。

SELECT subject,AVG(score) FROM test GROUP BY subject

「国語」「数学」「英語」の3科目の平均値がそれぞれ算出されました。
MySQL AVG 教科別平均



Author: webmaster