SQL MAX

概要: このチュートリアルでは、SQL SUM関数を使用してグループ内の最大値を見つける方法を学習します。

SQL MAX関数の紹介

SQLは、値の集合の中で最大値を見つけることを可能にするMAX関数を提供します。以下にMAX関数の構文を示します。

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

MAX関数はNULL値を無視します。

SUMCOUNTAVG関数とは異なり、DISTINCTオプションはMAX関数には適用できません。

SQL MAX関数の例

employeesテーブルを使用して、MAX関数の動作方法を示します。

employees_table

次のSELECT文は、employeesテーブルの従業員の最高(最大)給与を返します。

SELECT 
    MAX(salary)
FROM
    employees;Code language: SQL (Structured Query Language) (sql)

試してみる

最高給与の従業員を取得するには、次のようにサブクエリを使用します。

SELECT
	employee_id,
	first_name,
	last_name,
	salary
FROM
	employees
WHERE
	salary = (
		SELECT
			MAX(salary)
		FROM
			employees
	);Code language: SQL (Structured Query Language) (sql)

試してみる

SQL MAX highest salary

サブクエリは最高給与を返します。外部クエリは、最高給与に等しい給与を持つ従業員を取得します。

GROUP BYを使用したSQL MAXの例

通常、GROUP BY句と組み合わせてMAX関数を使用し、グループごとの最大値を見つけます。

たとえば、MAX関数を使用して、各部署の従業員の最高給与を次のように見つけることができます。

SELECT
	department_id,
	MAX(salary)
FROM
	employees
GROUP BY
	department_id;Code language: SQL (Structured Query Language) (sql)

試してみる

SQL MAX highest salary per department

結果に部署名を含めるには、次のようにemployeesテーブルとdepartmentsテーブルを結合します。

SELECT
	d.department_id,
	department_name,
	MAX(salary)
FROM
	employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
	e.department_id;Code language: SQL (Structured Query Language) (sql)

試してみる

SQL MAX highest salary by department example

ORDER BYを使用したSQL MAXの例

他の集計関数と同様に、MAX関数の結果に基づいて結果セットをソートするには、MAX関数をORDER BY句に配置する必要があります。

たとえば、次の文は、各部署の従業員の最高給与を返し、最高給与に基づいて結果セットをソートします。

SELECT
	d.department_id,
	department_name,
	MAX(salary)
FROM
	employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
	e.department_id
ORDER BY
	MAX(salary) DESC;Code language: SQL (Structured Query Language) (sql)

試してみる

SQL MAX with ORDER BY example

HAVINGを使用したSQL MAXの例

HAVING句でMAX関数を使用して、GROUP BY句で集計されたグループに条件を追加します。

たとえば、最高給与が12000を超える従業員がいる部署を取得するには、次のようにHAVING句でMAX関数を使用します。

SELECT
	d.department_id,
	department_name,
	MAX(salary)
FROM
	employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
	e.department_id
HAVING
	MAX(salary) > 12000;Code language: SQL (Structured Query Language) (sql)

試してみる

SQL MAX with HAVING clause example

このチュートリアルでは、MAX関数を使用して値のグループ内の最大値を見つける方法を示しました。

このチュートリアルは役に立ちましたか?