概要: このチュートリアルは、実践的な例を通してSQL MIN関数の習得を支援します。チュートリアル終了後、値の集合の中で最小値を見つけるためにMIN関数を効果的に適用する方法を理解します。
SQL MIN関数の紹介
SQL MIN関数は、値の集合の中で最小値を返します。以下にMIN関数の構文を示します。
MIN(expression)
Code language: SQL (Structured Query Language) (sql)
MAX関数と同様に、MIN関数もNULL値を無視し、DISTINCTオプションはMIN関数には適用できません。
SQL MIN関数の例
MIN関数の機能を実演するために、employees
テーブルを使用します。

従業員の最低(最小)給与を見つけるには、employees
テーブルのsalary
列にMIN関数を適用します。
SELECT
MIN(salary)
FROM
employees;
Code language: SQL (Structured Query Language) (sql)

最低給与の従業員の情報を取得するには、次のサブクエリを使用します。
SELECT
employee_id,
first_name,
last_name,
salary
FROM
employees
WHERE
salary = (
SELECT
MIN(salary)
FROM
employees
);
Code language: SQL (Structured Query Language) (sql)

まず、サブクエリが最小給与を返します。次に、外側のクエリは、サブクエリによって返された最低給与に等しい給与を持つ従業員を取得します。
GROUP BY句を使用したSQL MINの例
GROUP BY句とMIN関数を組み合わせて、各グループ内の最小値を見つけることがよくあります。
例えば、次のクエリは、各部署で最低給与の従業員を返します。
SELECT
department_id,
MIN(salary)
FROM
employees
GROUP BY
department_id;
Code language: SQL (Structured Query Language) (sql)

GROUP BY句は、部署ごとに従業員をグループ化します。各グループに対して、クエリは最低給与の行を返します。
部署名が表示されている限り、結果セットは有益ではありません。
結果セットに部署の名前を組み合わせるには、次のように内部結合句を使用してemployees
テーブルとdepartments
テーブルを結合する必要があります。
SELECT
d.department_id,
department_name,
MIN(salary)
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
d.department_id;
Code language: SQL (Structured Query Language) (sql)

ORDER BY句を使用したSQL MINの例
MIN関数の結果でグループをソートするには、ORDER BY句にMIN関数を配置する必要があります。
次のクエリは、まず各部署で最低給与の従業員を取得し、次にこれらの部署を給与の昇順でソートします。
SELECT
d.department_id,
department_name,
MIN(salary)
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
d.department_id
ORDER BY
MIN(salary);
Code language: SQL (Structured Query Language) (sql)

HAVING句を使用したSQL MINの例
HAVING句を使用して、グループのフィルタ条件を指定します。MIN関数の結果に基づいてグループをフィルタリングするには、HAVING句にMIN関数を配置します。
たとえば、次のクエリは、各部署で最低給与の従業員を取得します。次に、給与が3000未満の部署のみを含めます。
SELECT
d.department_id,
department_name,
MIN(salary)
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
d.department_id
HAVING
MIN(salary) < 3000;
Code language: SQL (Structured Query Language) (sql)

これで、値の集合の中で最小値を見つけるためにSQL MIN関数を使用する方法がわかるはずです。