概要:このチュートリアルでは、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を無視します。
集計関数は、以下の場合にのみ式として使用できます。
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)

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)

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)

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)

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)

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