SQL 聚合函數

摘要:在本教學中,您將學習 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 聚合函數

  •  AVG() – 返回集合的平均值。
  •  COUNT() – 返回集合中的項目數量。
  •  MAX() – 返回集合中的最大值。
  •  MIN() – 返回集合中的最小值
  •  SUM() – 返回集合中所有或相異值的總和

除了 COUNT() 函數外,SQL 聚合函數會忽略 null 值。

您只能在以下情況下使用聚合函數作為表達式

  • SELECT 語句的選取清單,無論是子查詢還是外部查詢。
  • HAVING 子句

 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)
SQL Aggregate Functions - AVG

 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)
SQL Aggregate Functions - MIN

 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)
SQL Aggregate Functions - MAX

 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)
SQL Aggregate Functions - COUNT

 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 Aggregate Functions - SUM

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