COUNTの基本構文
SQLのCOUNT関数を使うと、条件に一致したレコード数を取得することができます。
SELECT COUNT(*) FROM テーブル名;
本記事では、COUNT関数を使用したレコード数を取得する方法を解説していきます。
「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 |
+----------+
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つの扉 [ 株式会社アンク ] 価格:1,958円 |
SQLの絵本 第2版 データベースが好きになる新しい9つの扉
データベースは沢山のデータを管理するためのソフトで、データの登録/変更/削除を確実にし、多数のユーザーからの操作を受け付ける仕組みが備わっています。
このデータベースを操作するための言語がSQLです。
本書は「そもそもデータベース(リレーショナルデータベース)とは
どういうものであるか」から解説を始めます。基礎知識を身につけ、
データの操作を実際に試して学ぶことができる一冊です。
学習書のお求めはこちらから → IT開発関連書とビジネス書が豊富な翔泳社の通販『SEshop』