SQL 集計関数

概要:このチュートリアルでは、AVG()COUNT()MIN()MAX()、およびSUM()を含むSQL集計関数について学びます。

SQL集計関数は、値の集合に対して計算を行い、単一の値を返します。たとえば、平均関数(AVG)は値のリストを受け取り、平均を返します。

集計関数は値の集合に対して動作するため、多くの場合、GROUP BY句を伴うSELECTステートメントで使用されます。GROUP BY句は結果セットを値のグループに分割し、集計関数は各グループに対して単一の値を返します。

以下は、集計関数がGROUP BY句とともに使用される方法を示しています。

SELECT c1, aggregate_function(c2)
FROM table
GROUP BY c1;Code language: SQL (Structured Query Language) (sql)

以下は、一般的に使用されるSQL集計関数です。

  •  AVG() – 集合の平均値を返します。
  •  COUNT() – 集合内のアイテム数を返します。
  •  MAX() – 集合内の最大値を返します。
  •  MIN() – 集合内の最小値を返します。
  •  SUM() – 集合内のすべての値または異なる値の合計を返します。

COUNT()関数を除き、SQL集計関数はNULLを無視します。

集計関数は、以下の場合にのみ式として使用できます。

  • サブクエリまたは外部クエリのいずれかのSELECTステートメントの選択リスト。
  • HAVING

AVG

AVG()関数は、集合内の平均値を返します。以下は、AVG()関数の構文を示しています。

AVG( ALL | DISTINCT)Code language: SQL (Structured Query Language) (sql)

ALLキーワードは、AVG()関数にすべての値の平均を計算するように指示し、DISTINCTキーワードは、関数に異なる値のみを操作するように強制します。デフォルトでは、ALLオプションが使用されます。

次の例は、AVG()関数を使用して各部門の平均給与を計算する方法を示しています。

SELECT 
    department_name, ROUND(AVG(salary), 0) avg_salary
FROM
    employees
        INNER JOIN
    departments USING (department_id)
GROUP BY department_name
ORDER BY department_name;Code language: SQL (Structured Query Language) (sql)
SQL Aggregate Functions - AVG

MIN

MIN()関数は、集合の最小値を返します。以下は、MIN()関数の構文を示しています。

MIN(column | expression)Code language: SQL (Structured Query Language) (sql)

たとえば、次のステートメントは、各部門の従業員の最小給与を返します。

SELECT 
    department_name, MIN(salary) min_salary
FROM
    employees
        INNER JOIN
    departments USING (department_id)
GROUP BY department_name
ORDER BY department_name;Code language: SQL (Structured Query Language) (sql)
SQL Aggregate Functions - MIN

MAX

MAX()関数は、集合の最大値を返します。MAX()関数には次の構文があります。

MAX(column | expression)Code language: SQL (Structured Query Language) (sql)

たとえば、次のステートメントは、各部門の従業員の最高給与を返します。

SELECT 
    department_name, MAX(salary) highest_salary
FROM
    employees
        INNER JOIN
    departments USING (department_id)
GROUP BY department_name
ORDER BY department_name;Code language: SQL (Structured Query Language) (sql)
SQL Aggregate Functions - MAX

COUNT

COUNT()関数は、集合内のアイテム数を返します。以下は、COUNT()関数の構文を示しています。

COUNT ( [ALL | DISTINCT] column | expression | *)Code language: SQL (Structured Query Language) (sql)

たとえば、次の例では、COUNT(*)関数を使用して、各部門の従業員数を返します。

SELECT 
    department_name, COUNT(*) headcount
FROM
    employees
        INNER JOIN
    departments USING (department_id)
GROUP BY department_name
ORDER BY department_name;Code language: SQL (Structured Query Language) (sql)
SQL Aggregate Functions - COUNT

SUM

SUM()関数は、すべての値の合計を返します。以下は、SUM()関数の構文を示しています。

SUM(ALL | DISTINCT column)Code language: SQL (Structured Query Language) (sql)

たとえば、次のステートメントは、各部門のすべての従業員の給与の合計を返します。

SELECT 
    department_id, SUM(salary)
FROM
    employees
GROUP BY department_id;
Code language: SQL (Structured Query Language) (sql)
SQL Aggregate Functions - SUM

このチュートリアルでは、AVG()COUNT()MIN()MAX()、およびSUM()関数を含む最も一般的に使用されるSQL集計関数を学習しました。