摘要:在本教程中,您将学习如何使用 SQL MAX 函数查找组中的最大值。
SQL MAX 函数简介 #
SQL 提供了 MAX 函数,允许您在一组值中找到最大值。
下面演示了 MAX 函数的语法
MAX(expression)Code language: SQL (Structured Query Language) (sql)MAX 函数会忽略 NULL 值。
与 SUM、COUNT 和 AVG 函数不同,DISTINCT 选项不适用于 MAX 函数。
SQL MAX 函数示例 #
我们将使用 employees 表来演示 MAX 函数的工作原理。

以下 SELECT 语句返回 employees 表中员工的最高(最大)薪水。
SELECT
MAX(salary)
FROM
employees;Code language: SQL (Structured Query Language) (sql)要获取薪水最高的员工,您可以使用子查询,如下所示
SELECT
first_name,
last_name,
salary
FROM
employees
WHERE
salary = (
SELECT
MAX(salary)
FROM
employees
);Code language: SQL (Structured Query Language) (sql)输出
first_name | last_name | salary
------------+-----------+----------
Steven | King | 24000.00子查询返回最高薪水。外部查询获取薪水等于最高薪水的员工。
SQL MAX 与 GROUP BY 示例 #
我们通常将 MAX 函数与 GROUP BY 子句一起使用,以查找每个组的最大值。
例如,我们可以使用 MAX 函数查找每个部门中员工的最高薪水,如下所示
SELECT
department_id,
MAX(salary) max_salary
FROM
employees
GROUP BY
department_id
ORDER BY max_salary;Code language: SQL (Structured Query Language) (sql)输出
department_id | max_salary
---------------+------------
1 | 4400.00
4 | 6500.00
5 | 8200.00
6 | 9000.00
7 | 10000.00
3 | 11000.00
11 | 12000.00
10 | 12000.00
2 | 13000.00
8 | 14000.00
9 | 24000.00要在结果中包含部门名称,我们将 employees 表与 departments 表连接起来,如下所示
SELECT
department_name,
MAX(salary) max_salary
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
department_name
ORDER BY
max_salary;Code language: SQL (Structured Query Language) (sql) department_name | max_salary
------------------+------------
Administration | 4400.00
Human Resources | 6500.00
Shipping | 8200.00
IT | 9000.00
Public Relations | 10000.00
Purchasing | 11000.00
Accounting | 12000.00
Finance | 12000.00
Marketing | 13000.00
Sales | 14000.00
Executive | 24000.00Code language: PHP (php)SQL MAX 与 HAVING 示例 #
我们在 HAVING 子句中使用 MAX 函数,为由 GROUP BY 子句汇总的组添加条件。
例如,要获取某个部门,其中有员工的最高薪水大于 12000,您可以在 HAVING 子句中使用 MAX 函数,如下所示
SELECT
department_name,
MAX(salary) max_salary
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
department_name
HAVING
MAX(salary) > 12000
ORDER BY
max_salary;Code language: SQL (Structured Query Language) (sql)输出
department_name | max_salary
-----------------+------------
Marketing | 13000.00
Sales | 14000.00
Executive | 24000.00摘要 #
- 使用
MAX函数查找一组值中的最大值。 - 将
MAX函数与GROUP BY子句一起使用,以查找每个组的最大值。
数据库 #
本教程是否有帮助?