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 聚合函数都会忽略空值。

你只能在下述位置使用聚合函数作为表达式

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