MySQL AVG関数の使い方を初心者向けに解説!SQLで平均値を計算する方法(GROUP BYと集約関数の基本)
生徒
「MySQLやSQLを勉強していると、AVG関数ってよく出てくるんですが、これは何をするものなんですか?」
先生
「AVG関数は、データベースに保存されている数値の平均値を計算するためのSQLの集約関数です。例えば、クラスのテストの平均点や、商品の平均価格などを計算するときに使います。」
生徒
「平均値って、全部足して人数で割るあの平均ですか?」
先生
「その通りです。SQLでは、その計算を自動で行ってくれるのがAVG関数です。わざわざ自分で計算する必要はありません。」
生徒
「GROUP BYっていうSQLと一緒に使うこともありますよね?」
先生
「はい。GROUP BYを使うと、グループごとの平均値を出すことができます。例えば、部署ごとの平均給料や、科目ごとの平均点などを計算できます。」
生徒
「なんだか難しそうですが、初心者でも理解できますか?」
先生
「大丈夫です。紙の表を見ながら平均を出すイメージで説明するので、パソコンが苦手な人でも理解できるように順番に解説します。」
1. MySQLのAVG関数とは?平均値を計算するSQL
MySQLのAVG関数とは、SQLの集約関数の一つで、データの平均値を計算するために使われる関数です。 SQL初心者がデータベースを扱うときによく使う重要な関数の一つです。
平均値とは、複数の数字をすべて足して、その数で割った値のことです。例えばテストの点数が「80点、90点、70点」だった場合は、合計240点を3人で割るので平均は80点になります。
MySQLでは、この計算を自動で行ってくれるSQL関数がAVG関数です。
AVGは「Average(アベレージ)」という英語の略で、日本語では「平均」という意味になります。
2. MySQL AVG関数の基本構文(SQLの書き方)
MySQLで平均値を計算する基本的なSQL構文はとてもシンプルです。
SELECT AVG(カラム名)
FROM テーブル名;
このSQLの意味を簡単に説明します。
- SELECT → データを取得する命令
- AVG() → 平均値を計算する関数
- FROM → どのテーブルからデータを取るか指定
つまりこのSQLは「テーブルの中にある数値の平均を計算してください」という意味になります。
3. AVG関数で平均年齢を計算するSQLの例
それでは実際にMySQLのAVG関数を使って平均値を計算してみましょう。
例えば、次のような会員テーブルがあるとします。
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 高橋美咲 | 28 | misaki@example.com
5 | 伊藤健太 | 35 | kenta@example.com
このテーブルの平均年齢を計算してみます。
SELECT AVG(age)
FROM users;
実行結果は次のようになります。
AVG(age)
--------
27.4
この結果は、5人の年齢の平均が27.4歳という意味になります。
4. AVG関数に別名(AS)を付けるSQL
AVG関数を使うと、結果の列名が「AVG(age)」のように表示されます。 しかし、実際のシステム開発では、わかりやすい名前に変更することが多いです。
そのときに使うのが「AS」というSQLです。
SELECT AVG(age) AS average_age
FROM users;
実行結果は次のようになります。
average_age
-----------
27.4
ASは「別名を付ける」という意味のSQLです。 プログラム開発ではとてもよく使われる重要な書き方です。
5. GROUP BYとAVG関数を組み合わせる方法
AVG関数は、GROUP BYと一緒に使うことでグループごとの平均値を計算できます。
GROUP BYとは、データをグループにまとめるSQLです。
例えば、次のような社員テーブルがあるとします。
id | name | department | salary
---+------------+------------+-------
1 | 山田太郎 | 営業 | 300000
2 | 佐藤花子 | 営業 | 320000
3 | 鈴木一郎 | 開発 | 400000
4 | 高橋美咲 | 開発 | 420000
5 | 伊藤健太 | 人事 | 350000
6 | 小林直人 | 人事 | 360000
部署ごとの平均給料を計算するSQLは次のようになります。
SELECT department, AVG(salary)
FROM employees
GROUP BY department;
実行結果は次のようになります。
department | AVG(salary)
-----------+------------
営業 | 310000
開発 | 410000
人事 | 355000
このように、GROUP BYを使うと「部署ごとの平均給料」を簡単に計算できます。
6. 条件付きで平均値を計算する(WHEREとAVG)
AVG関数はWHEREと組み合わせることで、特定の条件のデータだけ平均値を計算することもできます。
例えば「30歳以上の平均年齢」を計算してみます。
SELECT AVG(age)
FROM users
WHERE age >= 30;
実行結果は次のようになります。
AVG(age)
--------
32.5
このSQLは「30歳以上の人の年齢だけを対象にして平均を計算する」という意味になります。
このようにWHEREとAVGを組み合わせることで、条件付きの平均値を簡単に求めることができます。
7. AVG関数を使うときに覚えておきたいポイント
MySQLのAVG関数を使うときは、いくつか覚えておくと良いポイントがあります。
まず、AVG関数は数値データにしか使えません。文字データには使用できません。例えば名前やメールアドレスの平均値は計算できません。
次に、NULLという値は平均計算に含まれません。NULLとは「値が入っていない状態」を意味するデータベース用語です。
例えば5人のデータがあっても、1人がNULLだった場合は4人のデータだけで平均値が計算されます。
また、AVG関数はデータ分析やレポート作成、売上分析、アクセス解析など様々なシステムで使われるとても重要なSQL機能です。
MySQL、PostgreSQL、Oracle、SQL Serverなど多くのデータベースでも同じように使われるため、SQL初心者が最初に覚えるべき集約関数の一つです。
まとめ
MySQLのAVG関数で平均値を計算する方法の振り返り
この記事では、MySQLのAVG関数を使って平均値を計算する方法について、SQL初心者でも理解できるように順番に解説してきました。AVG関数は、SQLの中でもとてもよく使われる集約関数の一つであり、データベースに保存されている数値データの平均値を計算するときに使用します。
平均値とは、複数の数値をすべて合計し、その件数で割った値のことです。例えばテストの点数や商品の価格、社員の給料など、様々なデータの平均を計算するときに使われます。MySQLのAVG関数を使うと、複雑な計算を自分で書かなくても、SQLを一行書くだけで平均値を簡単に求めることができます。
MySQLやSQLの学習を始めたばかりの初心者にとって、AVG関数はSUM関数やCOUNT関数と並んで覚えておきたい基本的な集約関数です。データ分析やレポート作成、売上分析、ユーザー分析など、実際のシステム開発でも頻繁に利用されます。
AVG関数の基本構文
MySQLのAVG関数の基本構文はとてもシンプルです。次のSQLを書くことで、テーブルの指定したカラムの平均値を計算できます。
SELECT AVG(age)
FROM users;
このSQLは「usersテーブルのageカラムに保存されている数値の平均値を計算してください」という意味になります。
SQL初心者の方は、SELECTはデータを取得する命令、FROMはどのテーブルからデータを取得するか指定する命令、そしてAVGは平均値を計算する関数というイメージで覚えておくと理解しやすくなります。
サンプルデータでAVG関数を復習
ここでもう一度、MySQLのAVG関数の使い方をサンプルデータを使って復習してみましょう。
次のようなusersテーブルがあるとします。このテーブルには会員の名前や年齢、メールアドレスが保存されています。
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 高橋美咲 | 28 | misaki@example.com
5 | 伊藤健太 | 35 | kenta@example.com
6 | 渡辺彩 | 24 | aya@example.com
このテーブルの平均年齢を計算するSQLは次のようになります。
SELECT AVG(age)
FROM users;
SQLを実行すると次のような結果になります。
AVG(age)
--------
26.8
この結果は、usersテーブルに登録されている6人の年齢の平均値が26.8歳であることを意味しています。
AVG関数にASを使って分かりやすい列名を付ける
SQLでAVG関数を使うと、実行結果のカラム名が「AVG(age)」のように表示されます。しかし実際のプログラム開発では、このままだと少し分かりにくいことがあります。
そのため、多くの場合はASを使って分かりやすい名前を付けます。
SELECT AVG(age) AS average_age
FROM users;
average_age
-----------
26.8
このようにASを使うことで、結果の列名を「average_age」という分かりやすい名前に変更できます。SQLの可読性を高めるためにも、ASを使った別名の付け方は覚えておくと便利です。
GROUP BYとAVG関数でグループごとの平均値を計算
AVG関数はGROUP BYと組み合わせることで、グループごとの平均値を計算できます。これはSQLの中でも非常に重要な使い方です。
例えば、次のような社員テーブルがあるとします。
id | name | department | salary
---+------------+------------+-------
1 | 山田太郎 | 営業 | 300000
2 | 佐藤花子 | 営業 | 320000
3 | 鈴木一郎 | 開発 | 400000
4 | 高橋美咲 | 開発 | 420000
5 | 伊藤健太 | 人事 | 350000
6 | 小林直人 | 人事 | 360000
7 | 田中誠 | 営業 | 310000
部署ごとの平均給料を計算するSQLは次のようになります。
SELECT department, AVG(salary)
FROM employees
GROUP BY department;
department | AVG(salary)
-----------+------------
営業 | 310000
開発 | 410000
人事 | 355000
GROUP BYを使うことで、営業、開発、人事といった部署ごとに平均給料を計算できます。このような集計処理は、売上分析やデータ分析などの場面で非常によく使われます。
WHEREとAVGを組み合わせた条件付き平均
AVG関数はWHERE句と組み合わせることで、特定の条件に一致するデータだけ平均値を計算することもできます。
SELECT AVG(age)
FROM users
WHERE age >= 30;
AVG(age)
--------
32.5
このSQLは、usersテーブルの中から30歳以上のデータだけを対象にして平均年齢を計算しています。条件付きの平均値を求めたいときには非常に便利なSQLの書き方です。
AVG関数を使うときのポイント
MySQLのAVG関数を使うときには、いくつか覚えておきたいポイントがあります。まずAVG関数は数値データの平均を計算する関数なので、文字データには使用できません。名前やメールアドレスの平均値は計算できないため注意が必要です。
また、データベースにはNULLという値があります。NULLとは値が入っていない状態のデータを意味します。AVG関数はNULLの値を平均計算に含めないという特徴があります。
例えば、6件のデータがあって1件がNULLだった場合、AVG関数は残りの5件の数値だけを使って平均値を計算します。SQL初心者の方はこの仕様を覚えておくと、データ分析を行うときに役立ちます。
AVG関数はMySQLだけでなく、PostgreSQL、Oracle、SQL Serverなど多くのデータベースシステムでも同じように使われています。そのため、SQLの基礎としてAVG関数をしっかり理解しておくことは、データベースを学ぶうえでとても重要です。
生徒
AVG関数って、SQLで平均値を計算するための関数なんですよね。思っていたよりも簡単に平均が出せるんですね。
先生
そうですね。AVG関数はデータベースの数値データの平均値を簡単に計算できる便利なSQL関数です。SQL初心者が最初に覚える集約関数の一つでもあります。
生徒
SELECT AVG(age) FROM users; のように書けば、usersテーブルの年齢の平均が計算できるんですよね。
先生
その通りです。そして、ASを使えば平均値の列名を分かりやすく変更することもできます。これは実際のシステム開発でもよく使われます。
生徒
GROUP BYと一緒に使うと、部署ごとの平均給料のような集計もできるのが便利だと思いました。
先生
はい。GROUP BYとAVG関数の組み合わせは、データ分析やレポート作成で非常によく使われるSQLの書き方です。データをグループに分けて平均を計算できるので、とても実用的です。
生徒
WHEREを使えば、条件付きで平均値を計算することもできるんですよね。
先生
そうです。例えば年齢が三十歳以上の平均や、特定の部署だけの平均など、条件を付けてデータを集計できます。
生徒
AVG関数はデータ分析や売上分析でも使われる重要なSQLなんですね。
先生
その通りです。AVG関数を理解しておくと、データベースの集計処理や分析処理がとても分かりやすくなります。SQLを学ぶうえでとても大切な基礎なので、しっかり覚えておきましょう。