摘要:本教程帮助你通过实际示例掌握 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)

首先,子查询返回最低薪酬。然后,外部查询检索薪水等于子查询返回的最低薪酬的员工。
带 GROUP BY 的 SQL MIN 示例
我们通常将 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)

带 ORDER BY 的 SQL MIN 示例
要按 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)

HAVING 子句中的 SQL MIN 示例
使用 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 函数来查找一组值中的最小值。
本教程是否对你有所帮助?