SQL COUNT

概要:このチュートリアルでは、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テーブルを使用します。

employees_table

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)

試してみる

SQL COUNT with GROUP BY example

動作方法

  • まず、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 with INNER JOIN example

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 with ORDER BY example

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 with HAVING clause example

SQL COUNT(DISTINCT 式)の例

次の例では、COUNTを使用して、employeesテーブルのjob_id列の値の数を取得します。

SELECT 
    COUNT(job_id)
FROM
    employees;Code language: SQL (Structured Query Language) (sql)

試してみる

SQL COUNT expression example

クエリは40を返し、重複値を含みます。重複値を削除するには、COUNT関数にDISTINCTキーワードを使用します。

SELECT 
    COUNT(DISTINCT job_id)
FROM
    employees;
SQL COUNT DISTINCT example

次の例では、COUNT関数をDISTINCTキーワードと共に使用して、マネージャーの人数を取得します。

SELECT 
    COUNT(DISTINCT manager_id)
FROM
    employees;Code language: SQL (Structured Query Language) (sql)

試してみる

SQL COUNT DISTINCT manager example

概要

  • COUNT関数は、グループ内の行数を返します。
  • ALLキーワードは重複値を含め、DISTINCTキーワードは結果から重複値を除去します。
  • COUNT(*)は、クエリ内の行数を返し、重複行とNULL値を含む行を含みます。
このチュートリアルは役に立ちましたか?