分组函数的介绍
分组函数作用于一组数据,并对一组数据返回一个值.
(引用网上的一张图)
分组函数的使用规则
实例讲解:
分组函数
(不加Group By语句的话只可在查询列显示分组函数,不可显示其他字段)
MIN函数和MAX函数
MIN([DISTINCT|ALL] column|expression):返回每组中的最小值
MAX([DISTINCT|ALL] column|expression):返回每组中的最大值
MIN和MAX函数可以用于任何数据类型
SUM函数和AVG函数
SUM([DISTINCT|ALL] column|expression):返回每组的总和
AVG([DISTINCT|ALL] column|expression):返回每组的平均值
SUM和AVG函数只能够对数值类型的列或表达式操作
COUNT函数
COUNT(*):返回表中满足条件的行记录数
COUNT([DISTINCT|ALL] column|expression):返回表中满足条件的非空行记录数
DISTINCT函数
DISTINCT会消除重复记录后再使用组函数
分组函数中的空值处理
除了COUNT(*)和DISTINCT(COLUMN)之外,其他所有分组函数都会忽略列表中的空值,然后再进行计算
在分组函数中使用NVL函数可以使分组函数强制包含含有空值的记录
GROUP BY子句
创建数据组
使用GROUP BY子句可将表中满足WHERE条件的记录按照指定的列划分成若干个小组,其中GROUP BY子句指定要分组的列
使用GROUP BY子句
在SELECT列表中除了分组函数那些项,所有列都必须包含在GROUP BY子句中
GROUP BY所指定的列并不是必须出现在SELECT列表中
按多列分组的GROUP BY子句
HAVING子句
不能在WHERE子句中限制分组信息,要在HAVING子句中对数据组进行限制
组函数的嵌套
与单行函数不同,组函数只能嵌套两层
SELECT语句执行过程
<1>通过FROM子句中找到需要查询的表
<2>通过WHERE子句进行非分组函数筛选判断
<3>通过GROUP BY子句完成分组操作
<4>通过HAVING子句完成组函数筛选操作
<5>通过SELECT子句选择显示的列或表达式及组函数
<6>通过ORDER BY子句进行排序操作
作者:翎野君