摘要:本教程通过实例帮助您精通 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子句结合使用,以检索每个组的最小值。
数据库 #
本教程是否有帮助?