概要:このチュートリアルでは、SQL COUNT関数を使用してグループ内のアイテム数を取得する方法を学習します。
SQL COUNT関数の紹介
SQLのCOUNT関数は、クエリによって返される行数を返す集計関数です。COUNT関数はSELECT文で使用して、従業員数、各部署の従業員数、特定の職務に就いている従業員数などを取得できます。
SQL COUNT関数の構文を以下に示します。
COUNT([ALL | DISTINCT] expression);Code language: SQL (Structured Query Language) (sql)COUNT関数の結果は、渡す引数によって異なります。
ALLキーワードは、結果に重複値を含めます。たとえば、(1, 2, 3, 3, 4, 4)というグループがあり、COUNT関数を適用すると、結果は6になります。デフォルトでは、COUNT関数は、指定するかどうかに関わらずALLキーワードを使用します。DISTINCTキーワードは、一意の値のみをカウントします。たとえば、(1, 2, 3, 3, 4, 4)というグループにCOUNT関数を適用すると、結果は4になります。- 式は、値をカウントするテーブルの列です。
引数としてアスタリスク(*)を受け入れるCOUNT関数の別の形式を以下に示します。
COUNT(*)Code language: SQL (Structured Query Language) (sql)COUNT(*)関数は、クエリ内のテーブルの行数を返します。重複行とNULL値を含む行をカウントします。
SQL COUNT関数の例
COUNT関数の動作を確認するために、いくつかの例を見てみましょう。デモでは、サンプルデータベースのemployeesテーブルを使用します。

SQL COUNT(*)の例
次の例では、COUNT(*)関数を使用してemployeesテーブルの行数を取得します。
SELECT
COUNT(*)
FROM
employees;Code language: SQL (Structured Query Language) (sql)次の例では、COUNT(*)関数を使用して、idが6の部署で働く従業員数をカウントします。
SELECT
COUNT(*)
FROM
employees
WHERE
department_id = 6;Code language: SQL (Structured Query Language) (sql)この例では
- まず、
WHERE句で、idが6の部署をフィルタリングします。 - 次に、
COUNT(*)関数は、部署idが6であるemployeesテーブルの行数を返します。
次の例では、COUNT(*)関数を使用して、job idが9の従業員数を取得します。
SELECT
COUNT(*)
FROM
employees
WHERE
job_id = 9;Code language: SQL (Structured Query Language) (sql)動作方法。
- まず、
WHERE句は、job idが9であるemployeesテーブルの行を含めます。 - 次に、
COUNT(*)は、job idが9であるemployeesテーブルの行数を返します。
次の例では、ASキーワードを使用してCOUNT(*)に列エイリアスを割り当てます。
SELECT
COUNT(*) as employee_count
FROM
employees
WHERE
job_id = 9;Code language: JavaScript (javascript)SQL COUNTとGROUP BY句の例
次の例では、COUNT関数をGROUP BY句と共に使用して、各部署の従業員数を求めます。
SELECT
department_id,
COUNT(*)
FROM
employees
GROUP BY
department_id;Code language: SQL (Structured Query Language) (sql)
動作方法
- まず、
GROUP BY句は、employeesテーブルの行を部署idでグループ化します。 - 次に、
COUNT(*)関数は、各グループの行数を返します。
次の例では、COUNT(*)関数を使用して、部署別の従業員数を取得します。また、INNER JOIN句を使用して、結果セットに部署名を含めます。
SELECT
e.department_id,
department_name,
COUNT(*)
FROM
employees e
INNER JOIN departments d
ON d.department_id = e.department_id
GROUP BY
e.department_id,
department_name;Code language: SQL (Structured Query Language) (sql)
SQL COUNT(*)とORDER BY句の例
次の例では、ORDER BY句を使用して、部署別の従業員数をソートします。
SELECT
e.department_id,
department_name,
COUNT(*)
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
e.department_id
ORDER BY
COUNT(*) DESC;Code language: SQL (Structured Query Language) (sql)
SQL COUNTとHAVING句の例
次の例では、部署別の従業員数を返します。また、HAVING句を使用して、従業員が5人以上いる部署のみを選択します。
SELECT
e.department_id,
department_name,
COUNT(*)
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
e.department_id
HAVING
COUNT(*) > 5
ORDER BY
COUNT(*) DESC;Code language: SQL (Structured Query Language) (sql)
SQL COUNT(DISTINCT 式)の例
次の例では、COUNTを使用して、employeesテーブルのjob_id列の値の数を取得します。
SELECT
COUNT(job_id)
FROM
employees;Code language: SQL (Structured Query Language) (sql)
クエリは40を返し、重複値を含みます。重複値を削除するには、COUNT関数にDISTINCTキーワードを使用します。
SELECT
COUNT(DISTINCT job_id)
FROM
employees;
次の例では、COUNT関数をDISTINCTキーワードと共に使用して、マネージャーの人数を取得します。
SELECT
COUNT(DISTINCT manager_id)
FROM
employees;Code language: SQL (Structured Query Language) (sql)
概要
COUNT関数は、グループ内の行数を返します。ALLキーワードは重複値を含め、DISTINCTキーワードは結果から重複値を除去します。COUNT(*)は、クエリ内の行数を返し、重複行とNULL値を含む行を含みます。