データベース設計

【SQL入門】COUNTの使い方(レコード数取得)

COUNTの基本構文

SQLのCOUNT関数を使うと、条件に一致したレコード数を取得することができます。

SELECT  COUNT(*)  FROM  テーブル名;

本記事では、COUNT関数を使用したレコード数を取得する方法を解説していきます。

「userテーブル」には、次のようなデータが格納されていることを前提としています。

ID (id) ※PK名前 (name)住所 (address)年齢 (age)部署ID (department_id)
1001鈴木一郎東京都441
1002佐藤次郎埼玉県321
1003田中三郎千葉県242
1004伊藤四郎東京都222
1005斎藤五郎東京都NULL4
User テーブル

件数を取得:COUNT(*)

COUNT関数の引数に*(アスタリスク)を指定することで、レコード数を取得することができます。

■COUNT(*)の使用例

SELECT COUNT(*) FROM user;

■実行結果

+----------+
| COUNT(*) |
+----------+
| 5 |
+----------+

NULLを除いた件数を取得:COUNT(列名)

COUNT関数の引数に列名を指定することで、指定した列がNULL以外のレコード数を取得することができます。

■COUNT(列名)の使用例

SELECT COUNT(age) FROM user;

■実行結果

+----------------+
| COUNT(address) |
+----------------+
| 4 |
+----------------+

「ID="1005"」のレコードは年齢がNULLです。
「COUNT(age)」と指定することで、年齢がNULLである「ID="1005"」のデータを除いた件数「4」の結果が取得できます。

重複を除いた件数を取得:COUNT(DISTINCT 列名)

COUNT関数の引数にDISTINCT 列名を指定することで、重複を除いたレコード数を取得することができます。

■COUNT(DISTINCT 列名)の使用例

SELECT COUNT(DISTINCT department_id) FROM user;

■実行結果

+-------------------------------+
| COUNT(DISTINCT department_id) |
+-------------------------------+
| 3 |
+-------------------------------+

部署IDは「1」と「2」が重複しています。
「DISTINCT department_id」と指定することで、重複している部署IDを除いた件数「3」の結果が取得できます。

グループ化した件数を取得:GROUP BY用いたCOUNT

GROUP BY句を使いグループ化することで、グループ化したレコード数を取得することができます。

■GROUP BYを用いたCOUNTの使用例

SELECT
address, COUNT(*) FROM user
GROUP BY address;

■実行結果

+---------+----------+
| address | COUNT(*) |
+---------+----------+
| 東京都 |  3  |
| 埼玉県 |  1  |
| 千葉県 |  1  |
+---------+----------+

GROUP BY句で住所をグループ化し、その件数を求めています。

こちらの例では、GROUP BY句とCOUNTを使用し「東京都 3人、埼玉県 1人、千葉県 1人」という結果を取得できます。

学習書の紹介

SQLの絵本 第2版 データベースが好きになる新しい9つの扉

データベースは沢山のデータを管理するためのソフトで、データの登録/変更/削除を確実にし、多数のユーザーからの操作を受け付ける仕組みが備わっています。
このデータベースを操作するための言語がSQLです。
本書は「そもそもデータベース(リレーショナルデータベース)とは
どういうものであるか」から解説を始めます。基礎知識を身につけ、
データの操作を実際に試して学ぶことができる一冊です。

学習書のお求めはこちらから → IT開発関連書とビジネス書が豊富な翔泳社の通販『SEshop』

-データベース設計