SQL MIN

摘要:本教學透過實例幫助您精通 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 函數的功能。

employees_table

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

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

試試看

SQL MIN example

若要取得薪資最低的員工資訊,您可以使用以下子查詢

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 with Subquery example

首先,子查詢會傳回最低薪資。然後,外部查詢會檢索薪資等於子查詢傳回的最低薪資的員工。

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)

試試看

SQL MIN with GROUP BY example

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 with INNER JOIN example

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 with ORDER BY example

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)

試試看

SQLMIN with HAVING example

現在您應該知道如何使用 SQL MIN 函數來尋找一組值中的最小值。

這個教學對您有幫助嗎?