広告 SQL

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

2021年1月26日

COUNTの基本構文

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

COUNTの基本構文

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

スポンサーリンク

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

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

【userテーブル】

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

件数を取得: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