##分组函数
分组函数
分组函数是对表中一组记录进行操作,每组只返回一个结果,即首先要对表记录进行分组,然后再进行操作汇总,每组返回一个结果,分组时可能是整个表分为一组,也可能根据条件分成多组。
分组函数常用到以下五个函数:
-
-
-
- MIN
- MAX
- SUM
- AVG
- COUNT
-
-
#MIN//MAX函数
MIN和MAX函数主要是返回每组的最小值和最大值。
MIN([DISTINCT|ALL] column|expression)
MAX([DISTINCT|ALL] column|expression)
MIN和MAX可以用于任何数据类型 查询入职日期最早和最晚的日期
#SUM函数和AVG函数
SUM和AVG函数分别返回每组的总和及平均值。
SUM([DISTINCT|ALL] column|expression)
AVG([DISTINCT|ALL] column|expression)
SUM和AVG函数都是只能够对数值类型的列或表达式操作。
查询职位以SALES开头的所有员工平均工资、最低工资、最高工资、工资和。
#COUNT函数
COUNT(| [DISTINCT|ALL]表达式):返回满足条件的非空(NULL)行的数量
查询部门30有多少个员工领取奖金。
组函数中DISTINCT
DISTINCT会消除重复记录后再使用组函数
查询有员工的部门数量。
组函数中使用NVL
函数 NVL 函数可以使分组函数强制包含含有空值的记录
#创建数据组
用GROUP BY子句创建数据组
通过 GROUP BY 子句可将表中满足WHERE条件的记录按照指定的列划分成若干个小组 其中GROUP BY子句指定要分组的列
在SELECT列表中除了分组函数那些项,所有列都必须包含在GROUP BY 子句中。
GROUP BY 所指定的列并不是必须出现在SELECT 列表中。
#按多个列分组
#排除组结果
不能在 WHERE子句中限制组 可以通过 HAVING 子句限制组
使用 HAVING 子句限制组
-
-
- 记录已经分组.
- 使用过组函数.
- 与 HAVING 子句匹配的结果才输出
-
#SELECT语句执行过程
SELECT语句执行过程:
-
- 通过FROM子句中找到需要查询的表;
- 通过WHERE子句进行非分组函数筛选判断;
- 通过GROUP BY子句完成分组操作;
- 通过HAVING子句完成组函数筛选判断;
- 通过SELECT子句选择显示的列或表达式及组函数;
- 通过ORDER BY子句进行排序操作。
#组函数的嵌套
#本章总结
- 分组函数能解决的问题
- MIN函数和MAX函数
- SUM函数和AVG函数
- COUNT函数
- 组函数中DISTINCT消除重复行
- 组函数中空值处理
- 通过GROUP BY子句进行分组汇总
- GROUP BY子句使用需要注意的两个问题
- HAVING子句的使用
- SELECT语句的执行顺序
- 组函数的嵌套