MySQL数据库干货_17—— 聚合函数介绍
聚合函数介绍
聚合函数
聚合函数也称之为多行函数,组函数或分组函数。聚合函数不象单行函数,==聚合函数对行的分组进行操作,对每组给出一个结果。==如果在查询中没有指定分组,那么聚合函数则将查询到的结果集视为一组。
聚合函数类型
聚合函数说明:
函数名 | 描述 | 实例 |
---|---|---|
AVG(expression) | 返回一个表达式的平均值,expression 是一个字段 | 返回 Products 表中Price 字段的平均值:SELECT AVG(Price) AS AveragePrice FROM Products; |
COUNT(expression) | 返回查询的记录总数,expression 参数是一个字段或者 * 号 | 返回 Products 表中 products 字段总共有多少条记录:SELECT COUNT(ProductID) AS NumberOfProducts FROM Products; |
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; |
聚合函数使用方式
使用聚合函数的原则
- DISTINCT 使得函数只考虑不重复的值;
- 所有聚合函数忽略空值。为了用一个值代替空值,用 IFNULL 或 COALESCE 函数。
AVG 和 SUM 函数
AVG(arg)函数
对分组数据做平均值运算。
arg:参数类型只能是数字类型。(如果参数类型不匹配,则返回0)
SUM(arg)函数
对分组数据求和。
arg:参数类型只能是数字类型。(如果参数类型不匹配,则返回0)
示例:
计算员工表中工作编号含有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;