SQL 聚合函式

摘要:在本教程中,您將學習 SQL 聚合函式,包括 AVG()COUNT()MIN()MAX()SUM()

SQL 聚合函式對一組值進行計算並返回單個值。例如,平均值函式 AVG 接受一個值列表並返回平均值。

由於聚合函式對一組值進行操作,因此它經常與 SELECT 語句的 GROUP BY 子句一起使用。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

您只能在以下情況中將聚合函式用作表示式

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() 函式。

© .