《04数据更新和分组函数ppt课件》由会员分享,可在线阅读,更多相关《04数据更新和分组函数ppt课件(13页珍藏版)》请在金锄头文库上搜索。
1、统计及分组函数第四章回顾回顾q基础查询语句q数据更新insert update delete q事务2目标目标q分组函数和分组统计3分组函数分组函数q分组函数一般用于统计,常用如下:qcount() /求全部的记录数qavg() /求平均值qmin() /求最小值qmax() /求最大值qsum() /求总和4分组函数的使用分组函数的使用求员工数:select count(empno) as 员工数 from emp select count(*) as 员工数 from emp求所有员工的平均工资:select avg(sal) as 平均工资 from emp求所有员工的最高工资:sele
2、ct max(sal) as 最高工资 from emp求所有员工的最低工资:select min(sal) as 最低工资 from emp求部门20的总工资:select sum(sal) as 总工资 from emp where deptno=205分组统计分组统计q分组统计一般和分组函数配合使用q注:分组统计有一个原则,就是 select 后面的所有列中没有使用分组函数的列,必须出现在group by后面Select 分组字段或分组函数from 表 group by 分组字段 having 条件 order by 字段分组统计格式6分组统计分组统计GROUP BY统计每个部门的员工数
3、select deptno 部门编号,count(*) 员工数 from empgroup by deptno如何统计每个部门的平均工资?select deptno,avg(sal) from emp group by deptno7思考:执行以下的T-SQL:思考:执行以下的T-SQL: 结果如何?结果如何?分组统计分组统计思考思考select deptno,avg(sal) from empselect deptno,empno,avg(sal) from empgroup by deptnoselect deptno,max(avg(sal) from emp group by dept
4、no求平均工资最高的部门工资8分组统计注意点分组统计注意点只有在一列上存在重复的内容才有可能考虑分组注意:1、如果使用了group by,并指定了分组条件,可以将分组条件一起查询出来。2、如果不使用group by分组的话,则只能单独的使用分组函数。3、在使用分组函数的时候,不能出现分组函数和分组条件之外的字段。4、分组函数可以嵌套使用,但是在组函数嵌套使用的时候不能再出现分组条件的查询语句应改为: select max(avg(sal) from emp group by deptno9分组统计分组统计问题问题在以上统计部门编号和平均工资的基础上,如果只想看平均工资大于2000的部门编号和平
5、均工资,怎么办?select deptno,avg(sal) from empwhere avg(sal)2000group by deptno 能实现吗?分组函数只能在分组中使用,不允许在分组函数只能在分组中使用,不允许在where语句中出现,如果要在分组的基础上再统计,要使用语句中出现,如果要在分组的基础上再统计,要使用having10分组统计分组统计HAVINGselect 分组字段或分组函数from 表 group by 分组字段 having 条件 order by 字段select deptno,avg(sal) from empgroup by deptno having avg(sal)200011分组查询分组查询对比对比WHEREGROUP BYHAVINGqWHERE子句从数据源中去掉不符合其搜索条件的数据qGROUP BY子句搜集数据行到各个组中,统计函数为各个组计算统计值qHAVING子句去掉不符合其组搜索条件的各组数据行12总结总结q分组函数和分组统计13