聚合函数
聚合函数介绍
聚合函数也称之为多行函数,组函数或分组函数。聚合函数不象单行函数,聚合函数对行的分组进行操作,对每组给出一个结果。如果在查询中没有指定分组,那么聚合函数则将查询到的结果集视为一组。
聚合函数类型
- AVG平均值
- COUNT 计数
- MAX 最大值
- MIN 最小值
- SUM 合计
聚合函数说明:
函数名 | 描述 | 实例 |
---|---|---|
AVG(expression) | 返回一个表达式的平均 值,expression 是一个 | |
字段 | 返回 Products 表中Price 字段的平均值: SELECT AVG(Price) AS AveragePrice FROM Products; | |
COUNT(expression) | 返回查询的记录总数, expression 参数是一个 | |
字段或者 * 号 | 返回查询的记录总数, expression 参数是一个 | |
字段或者 * 号 | ||
MAX(expression) | 返回字段 expression 中 的最大值 | 返回数据表 Products 中字段 Price 的最大值: SELECT MAX(Price) AS LargestPrice FROM Products; |
MIN(expression) | 返回字段 expression 中 的最小值 | 返回数据表 Products 中字段 Price 的最小值: SELECT MIN(Price) AS MinPrice FROM Products; |
SUM(expression) | 返回指定字段的总和 | 计算 OrderDetails 表中字段 Quantity 的总和: SELECT SUM(Quantity) AS TotalItemsOrdered FROM |
OrderDetails; |
聚合函数使用方式
聚合函数的语法
SELECT [column,] group function(column), ......
FROM table
[WHERE condition]
[GROUP BY column]
[ORDER BY column];
使用聚合函数的原则
- DISTINCT 使得函数只考虑不重复的值;
- 所有聚合函数忽略空值。为了用一个值代替空值,用 IFNULL 或 COALESCE 函数。
AVG 和 SUM 函数
AVG(arg)函数
对分组数据做平均值运算。
arg:参数类型只能是数字类型。
SUM(arg)函数
对分组数据求和。
arg:参数类型只能是数字类型。
示例:
计算员工表中工作编号含有REP的工作岗位的平均薪水与薪水总和。
SELECT AVG(salary),SUM(salary)
FROM employees
WHERE job_id LIKE '%REP%';
MIN 和 MAX 函数
MIN(arg)函数
求分组中最小数据。
arg:参数类型可以是字符、数字、 日期。
MAX(arg)函数
求分组中最大数据。
arg:参数类型可以是字符、数字、 日期。
示例:
查询员工表中入职时间最短与最长的员工,并显示他们的入职时间。
SELECT MIN(hire_date), MAX(hire_date)
FROM employees;
COUNT 函数
返回分组中的总行数。
COUNT 函数有三种格式:
- COUNT(*):返回表中满足 SELECT 语句的所有列的行数,包括重复行,包括有空值列的行。
- COUNT(expr):返回在列中的由 expr 指定的非空值的数。
- COUNT(DISTINCT expr):返回在列中的由 expr 指定的唯一的非空值的数。
使用 DISTINCT 关键字
- COUNT(DISTINCT expr) 返回对于表达式 expr 非空并且值不相同的行数
- 显示 EMPLOYEES 表中不同部门数的值
示例一:
显示员工表中部门编号是80中有佣金的雇员人数。
SELECT COUNT(commission_pct)
FROM employees
WHERE department_id = 80;
示例二:
显示员工表中的部门数。
SELECT COUNT(DISTINCT department_id)
FROM employees;
组函数和 Null 值
在组函数中使用 IFNULL 函数
SELECT AVG(IFNULL(commission_pct, 0))
FROM employees;