摘要:本教學透過實例幫助您精通 SQL MIN 函數。完成本教學後,您將了解如何有效地應用 MIN 函數來尋找一組值中的最小值。
SQL MIN 函數簡介
SQL MIN 函數會傳回一組值中的最小值。以下示範 MIN 函數的語法。
MIN(expression)
Code language: SQL (Structured Query Language) (sql)
如同 MAX 函數,MIN 函數也會忽略 NULL 值,並且 DISTINCT 選項不適用於 MIN 函數。
SQL MIN 函數範例
我們將使用 employees
表格來示範 MIN 函數的功能。

若要尋找員工的最低(最小值)薪資,您需要將 MIN 函數應用於 employees
表格的 salary
資料行。
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)

首先,子查詢會傳回最低薪資。然後,外部查詢會檢索薪資等於子查詢傳回的最低薪資的員工。
SQL MIN 與 GROUP BY 範例
我們經常將 MIN 函數與 GROUP BY 子句一起使用,以尋找每個群組中的最小值。
例如,以下查詢會傳回每個部門中薪資最低的員工。
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)

SQL MIN 與 ORDER BY 範例
若要依 MIN 函數的結果排序群組,您需要將 MIN 函數放在 ORDER BY 子句中。
以下查詢首先會檢索每個部門中薪資最低的員工,然後依薪資升序排序這些部門。
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)

SQL MIN 與 HAVING 範例
您可以使用 HAVING 子句 來指定群組的篩選條件。若要根據 MIN 函數的結果篩選群組,您需要將 MIN 函數放在 HAVING 子句中。
例如,以下查詢會檢索每個部門中薪資最低的員工。然後,它僅包含薪資低於 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 函數來尋找一組值中的最小值。