摘要:本教程透過例項幫助您精通 SQL MIN 函式。學完本教程後,您將知道如何有效地應用 MIN 函式來查詢一組值中的最小值。
SQL MIN 函式簡介 #
SQL MIN 函式返回一組值中的最小值。
以下是 MIN 函式的語法。
MIN(expression)Code language: SQL (Structured Query Language) (sql)與 MAX 函式類似,MIN 函式也會忽略 NULL 值,並且在使用 DISTINCT 選項時沒有任何影響。
SQL MIN 函式示例 #
我們將使用 employees 表來演示 MIN 函式的功能。

要查詢員工的最低(最小)薪水,您可以對 employees 表的 salary 列應用 MIN 函式。
SELECT
MIN(salary) min_salary
FROM
employees;Code language: SQL (Structured Query Language) (sql)輸出
min_salary
------------
2500.00Code language: CSS (css)要獲取薪水最低的員工資訊,您可以使用以下子查詢:
SELECT
first_name,
last_name,
salary
FROM
employees
WHERE
salary = (
SELECT
MIN(salary)
FROM
employees
);Code language: SQL (Structured Query Language) (sql)輸出
first_name | last_name | salary
------------+------------+---------
Karen | Colmenares | 2500.00查詢工作原理
- 首先,子查詢返回最低薪水。
- 然後,外部查詢檢索薪水等於子查詢返回的最低薪水的員工。
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)輸出
department_id | min
---------------+----------
11 | 8300.00
9 | 17000.00
3 | 2500.00
5 | 2700.00
4 | 6500.00
10 | 6900.00
6 | 4200.00
2 | 6000.00
7 | 10000.00
1 | 4400.00
8 | 6200.00在此示例中,GROUP BY 子句按部門對員工進行分組。對於每個組,查詢返回薪水最低的行。
只要我們能看到部門名稱,結果集的資訊量就不夠大。要在結果集中包含部門名稱,您需要使用內連線(inner join)子句將 employees 表與 departments 表連線起來,如下所示:
SELECT
department_name,
MIN(salary) min_salary
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
department_name
ORDER BY
min_salary;Code language: SQL (Structured Query Language) (sql)輸出
department_name | min_salary
------------------+------------
Purchasing | 2500.00
Shipping | 2700.00
IT | 4200.00
Administration | 4400.00
Marketing | 6000.00
Sales | 6200.00
Human Resources | 6500.00
Finance | 6900.00
Accounting | 8300.00
Public Relations | 10000.00
Executive | 17000.00Code language: PHP (php)SQL MIN 函式與 HAVING 結合使用的示例 #
您可以使用 HAVING 子句為分組指定篩選條件。要根據 MIN 函式的結果篩選分組,您可以將 MIN 函式放在 HAVING 子句中。
例如,以下查詢檢索每個部門中薪水最低的員工。然後,它只包含薪水小於 3000 的部門。
SELECT
department_name,
MIN(salary) min_salary
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
department_name
HAVING
MIN(salary) < 3000
ORDER BY
min_salary;Code language: SQL (Structured Query Language) (sql)輸出
department_name | min_salary
-----------------+------------
Purchasing | 2500.00
Shipping | 2700.00摘要 #
- 使用
MIN函式查詢一組值中的最小值。 - 將
MIN函式與GROUP BY子句結合使用,以檢索每個組的最小值。
資料庫 #
本教程是否有幫助?