摘要:在本教學中,您將學習 SQL 聚合函數,包括 AVG()
、COUNT()
、MIN()
、MAX()
和 SUM()
。
SQL 聚合函數會對一組值進行計算,並返回單一值。例如,平均值函數 (AVG
) 會取得一個值列表,並返回平均值。
由於聚合函數是對一組值進行操作,因此它通常與 GROUP BY
子句一起使用,該子句位於 SELECT
語句中。GROUP BY
子句將結果集劃分為多組值,而聚合函數會針對每個群組返回一個單一值。
以下說明如何在 GROUP BY
子句中使用聚合函數
SELECT c1, aggregate_function(c2)
FROM table
GROUP BY c1;
Code language: SQL (Structured Query Language) (sql)
以下是常用的 SQL 聚合函數
除了 COUNT()
函數外,SQL 聚合函數會忽略 null 值。
您只能在以下情況下使用聚合函數作為表達式
AVG
AVG()
函數返回集合中的平均值。以下說明 AVG()
函數的語法
AVG( ALL | DISTINCT)
Code language: SQL (Structured Query Language) (sql)
ALL
關鍵字指示 AVG()
函數計算所有值的平均值,而 DISTINCT
關鍵字則強制函數僅對相異值進行運算。預設情況下,使用 ALL
選項。
以下範例顯示如何使用 AVG() 函數計算每個部門的平均薪資
SELECT
department_name, ROUND(AVG(salary), 0) avg_salary
FROM
employees
INNER JOIN
departments USING (department_id)
GROUP BY department_name
ORDER BY department_name;
Code language: SQL (Structured Query Language) (sql)

MIN
MIN()
函數返回集合的最小值。以下說明 MIN()
函數的語法
MIN(column | expression)
Code language: SQL (Structured Query Language) (sql)
例如,以下語句返回每個部門員工的最低薪資
SELECT
department_name, MIN(salary) min_salary
FROM
employees
INNER JOIN
departments USING (department_id)
GROUP BY department_name
ORDER BY department_name;
Code language: SQL (Structured Query Language) (sql)

MAX
MAX()
函數返回集合的最大值。MAX()
函數的語法如下
MAX(column | expression)
Code language: SQL (Structured Query Language) (sql)
例如,以下語句返回每個部門員工的最高薪資
SELECT
department_name, MAX(salary) highest_salary
FROM
employees
INNER JOIN
departments USING (department_id)
GROUP BY department_name
ORDER BY department_name;
Code language: SQL (Structured Query Language) (sql)

COUNT
COUNT()
函數返回集合中的項目數量。以下顯示 COUNT()
函數的語法
COUNT ( [ALL | DISTINCT] column | expression | *)
Code language: SQL (Structured Query Language) (sql)
例如,以下範例使用 COUNT(*)
函數返回每個部門的人數
SELECT
department_name, COUNT(*) headcount
FROM
employees
INNER JOIN
departments USING (department_id)
GROUP BY department_name
ORDER BY department_name;
Code language: SQL (Structured Query Language) (sql)

SUM
SUM()
函數返回所有值的總和。以下說明 SUM()
函數的語法
SUM(ALL | DISTINCT column)
Code language: SQL (Structured Query Language) (sql)
例如,以下語句返回每個部門所有員工的總薪資
SELECT
department_id, SUM(salary)
FROM
employees
GROUP BY department_id;
Code language: SQL (Structured Query Language) (sql)

在本教學中,您已學習最常用的 SQL 聚合函數,包括 AVG()
、COUNT()
、MIN()
、MAX()
和 SUM()
函數。