摘要:在本教程中,你将学习如何使用 SQL SUM 函数查找组中的最大值。
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
employee_id,
first_name,
last_name,
salary
FROM
employees
WHERE
salary = (
SELECT
MAX(salary)
FROM
employees
);
Code language: SQL (Structured Query Language) (sql)

子查询返回最高工资。外部查询获取工资等于最高工资的员工。
包含 GROUP BY 的 SQL MAX 示例
我们通常将 MAX 函数与 GROUP BY 子句结合使用,以查找每个组的最大值。
例如,我们可以使用 MAX 函数查找每个部门中员工的最高工资,如下所示
SELECT
department_id,
MAX(salary)
FROM
employees
GROUP BY
department_id;
Code language: SQL (Structured Query Language) (sql)

若要在结果中包含部门名称,我们按照下列方式将 employees 表与 departments 表联接
SELECT
d.department_id,
department_name,
MAX(salary)
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
e.department_id;
Code language: SQL (Structured Query Language) (sql)

包含 ORDER BY 的 SQL MAX 示例
与其他聚合函数一样,若要根据 MAX 函数的结果对结果集进行排序,我们必须将 MAX 函数放在 ORDER BY 子句中。
例如,以下语句返回每个部门中员工的最高工资,并根据最高工资对结果集进行排序。
SELECT
d.department_id,
department_name,
MAX(salary)
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
e.department_id
ORDER BY
MAX(salary) DESC;
Code language: SQL (Structured Query Language) (sql)

包含 HAVING 的 SQL MAX 示例
我们在 HAVING 子句中使用 MAX 函数,以将条件添加到由 GROUP BY 子句总结的组中。
例如,若要获取最高工资高于 12000 的员工所在的部门,请在 HAVING 子句中使用 MAX 函数,如下所示
SELECT
d.department_id,
department_name,
MAX(salary)
FROM
employees e
INNER JOIN departments d ON d.department_id = e.department_id
GROUP BY
e.department_id
HAVING
MAX(salary) > 12000;
Code language: SQL (Structured Query Language) (sql)

在本教程中,我们向你展示了如何使用 MAX 函数查找一组值中的最大值。
本教程是否有用?