SQL

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

COUNTの基本構文

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

COUNTの基本構文

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

スポンサーリンク

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

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

【userテーブル】

ID (id) ※PK 名前 (name) 住所 (address) 年齢 (age) 部署ID (department_id)
1001 鈴木一郎 東京都 44 1
1002 佐藤次郎 埼玉県 32 1
1003 田中三郎 千葉県 24 2
1004 伊藤四郎 東京都 22 2
1005 斎藤五郎 東京都 NULL 4

件数を取得:COUNT(*)

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

■COUNT(*)の使用例

SELECT COUNT(*) FROM user;

■実行結果

+----------+
| COUNT(*) |
+----------+
|        5 |
+----------+
1 row in set (0.00 sec)

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

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

■COUNT(列名)の使用例

SELECT COUNT(age) FROM user;

■実行結果

+----------------+
| COUNT(address) |
+----------------+
|              4 |
+----------------+
1 row in set (0.00 sec)

「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 |
+-------------------------------+
1 row in set (0.00 sec)

部署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 |
+---------+----------+
3 rows in set (0.00 sec)

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

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

helpful