oracle分组统计查询

分组统计查询(本次都是使用scott用户下的表格)知识点
1. 统计函数的使用;
2. 分组统计的查询的实现;
3. 对分组的数据过滤;

* 统计函数(又称分组函数)

之前学过的count()函数。这个函数主要的作用是统计一张数据表格的数据量的个数。常用函数分共5个:为connt()、sum()、min()、avg()、max()。
1. 统计个数:count(),根据表格的实现数据量返回结果
2. 求和:sum(),是针对数字的统计
3. 平均值:avg()是针对数据的统计
4. 最小值:min(),各种数据类型多支持
5. 最大致:max()各种数据类型多支持

范例:select count() 人数,avg(sal)员工平均工资,sum(sal)每月工资支出,max(sal)最高工资,min(sal)最低工资from emp;以上的函数,在表没有数据的时候,只有count()会返回结果其他都是null count():可以准确的返回表中的全部记录;count(字段):统计不为null的所以数据量count(distinct 字段):消除重负的数据之后的结果。
* 分组统计

语句及查询执行顺序

	* 4.显示的数据列 select
	* 1.显示的数据来源 from
	* 2.筛选数据 where
	* 3针对筛选进行分组group by
	* 5。对选定的数据进行排序 order by

语句:
select deptno,count(*),avg(sal)from empgroup by deptno;
注意使用规范: 1.如果查询中不使用group by字句,那么select字句之允许出现统计函数,其他字段都不允许出现2. 如果查询中使用group by子句。那么select字段只能出现分组字段,分组函数,其他任何字段都不能出现。3.统计函数允许嵌套,但是嵌套之后的select子语句中允许出现嵌套函数,不允许出任何字段,包括分组字段。
* 多表查询与分组统计

当数组重复的时候分组才有意义,因为一个人也可以分为一组,只是没有意义而已,分组采用GROUP BY语句完成,语法如下:SELECT [DISTINCT] * | 列名称 [AS]别名,………FROM 表名称1 [别名1][WHERE 条件(s)][GROUP BY 分组字段1[,分组字段2,…]][ORDER BY 排序的字段 1,ASC| DESC,排序的字段2 ASC| DESC,….]
* having字句

WHERE和HAVING的别 WHERE:是在执行GROUP BY操作之前进行的过滤,表示从全部数据中筛选出部门数据,WHERE之中不能使用统计函数 HAVING:是在GROUP BY分组之后的再次过滤,可在HAVING子句中使用统计函数
* 分组查询案例

猜你喜欢

转载自blog.csdn.net/qq_42952318/article/details/82851951