一.多行函数的介绍
多行函数又称聚合函数,他对行的分组进行操作,对每个组给出一个结果;如果在查询中没有指定分组,则将查询结果看作一个组!
聚合函数的类型主要有:
-
avg 平均值
-
count 计数
-
max 最大值
-
min 最小值
-
sum 合计
注:
-
所有聚合函数忽略空值(不会去处理)!可以使用ifnull或coalesce函数来用一个值代替空值!
-
可以使用distinct使查询到的数据去重!
-
聚合函数不能互相嵌套使用!
二.函数类型的使用
语法:select 函数([distinc] 分组) from 表;
1.avg函数
作用:对分组数据求平均值;
avg函数操作的数据类型是数字类型的,如果是其他类型的数据,则返回一个0值!
例如:SELECT avg(SALARY) from employees;
2.sum函数
作用:对分组数据求和的;
sum函数操作的数据类型是数字类型的,如果是其他类型的数据,则返回一个0值!
例如:SELECT sum(SALARY) from employees;
3.max函数
作用:对分组求最大数据
操作类型可以是数字,字符,日期类型的
4.min函数
作用:对分组求最小数据
操作类型可以是数字,字符,日期类型的
注:max,min函数操作字符类型的数据时,是按ascll码来进行比大小的!
5.count函数
作用:对分组求总行数
count(*) 在每一行中将所有的列全部考虑,只要有一列数据不为空,则此行不为空,算作一行,计数+1!
count(expr) 在每一行中只考虑expr列,如果此行expr列数据为空,则不算一行,不进行计数!
三.数据分组
1.单列分组
语法:select 列名 from 表名 [where 选择条件] group by 列名 [order by 列名];
2.多列分组
语法:select 列名 from 表名 [where 选择条件] group by 列名1,列名2...[,列名....] [order by 列名];
四.分组的一些操作
1.having子句
语法:select 列名 from 表名 [where 选择条件] group by 列名 having 选择条件 [order by 列名];
注:having子句是对分组后的组数据内容进行选择过滤的,而where是对分组前的行数据进行选择过滤的!