摘要:在本教學中,您將學習如何使用 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 函數在數值群組中尋找最大值。
這個教學有幫助嗎?