MySQL の集計関数 - COUNT()・SUM()

ここでは MySQL のよく使う集計関数の COUNT() と SUM() についてご説明します。

サンプルデータベースのテーブルを使いますので、実際にスクリプトを実行してみたい方は、こちら のスクリプトを実行して school_db データベースを作成しておいてください。

MySQL の 集計関数 COUNT() の使い方

MySQL の COUNT() は、SELECT 文 で使い、レコードの数を BIGINT 型で返す集計関数です。

SELECT 	COUNT(カラム名)
FROM 	テーブル名
WHERE 	...

上のように COUNT(カラム名) のようにカラム名を指定した時は、そのカラムの NULL 以外のレコード数を返します。

COUNT(DISTINCT カラム名) と指定すると、そのカラムに保存されている NULL 以外のユニークな値のレコード数が取得できます。

COUNT(*) のように指定することもでき、この場合はカラムにかかわらず、NULL も含んだレコード数が取得できます。


それでは、COUNT() を使ってデータを取得してみましょう。

次のような exam_results テーブルがあります。

MySQL の集計関数 - COUNT()・SUM() 1


例えば、この exam_results テーブルの exam_id が 2 のレコードの数を取得したい時は、COUNT(*) を使って次のように書きます。

SELECT 	COUNT(*),
		COUNT(student_id)
FROM 	exam_results
WHERE 	exam_id = 2;

[実行結果]

MySQL の集計関数 - COUNT()・SUM() 2

exam_id = 2 のレコードが 4 行あるので、COUNT(*) は 4 を返しています。

COUNT(student_id) も取得していますが、exam_result_id = 6 のレコードの student_id が NULL なので 3 を返しています。


exam_id ごとの student_id の数を取得したい時は GROUP BY と COUNT(student_id) を使って、次のように取得できます。

SELECT 	exam_id,
		COUNT(student_id)
FROM 	exam_results
GROUP BY exam_id;

[実行結果]

MySQL の集計関数 - COUNT()・SUM() 3


テストにかかわらず、exam_results テーブルにレコードがある student_id の数を知りたい時には、COUNT と DISTINCT を使って次のように取得できます。

SELECT 	COUNT(DISTINCT student_id)
FROM 	exam_results;

[実行結果]

MySQL の集計関数 - COUNT()・SUM() 4

5 人の学生のデータが exam_results テーブルにあることがわかります。

MySQL の 集計関数 SUM() の使い方

MySQL の SUM() は結果セットのなかで、指定したカラムの合計値を返してくれる集計関数です。

SELECT 	SUM(カラム名)
FROM 	テーブル名
WHERE 	...

例えば、以下の exam_results テーブルから、exam_id が 1 の score の合計値は次のように取得できます。

MySQL の集計関数 - COUNT()・SUM() 1


SELECT 	SUM(score) 
FROM 	exam_results
WHERE 	exam_id = 1;

[実行結果]

MySQL の集計関数 - COUNT()・SUM() 5


また、COUNT() の時と同様に、GROUP BY と一緒に使って、exam_id ごとの score の合計値も取得できます。

SELECT 	exam_id,
		SUM(score) 
FROM 	exam_results
GROUP BY exam_id;

[実行結果]

MySQL の集計関数 - COUNT()・SUM() 6


最後に、結果セットにレコードがなかった時、COUNT() は 0 を返しますが、SUM() は NULL を返しますのでご注意ください。

SELECT 	COUNT(student_id),
		SUM(score) 
FROM 	exam_results
WHERE 	exam_id = 0;

[実行結果]

MySQL の集計関数 - COUNT()・SUM() 7


以上、MySQL のよく使う集計関数の COUNT() と SUM() についてご説明しました。

© 2024 MySQL 入門