目次
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人」という結果を取得しています。