文章目录
6 Oracle 表的管理
6.5 oracle表的管理 -表查询(重点)
6.5.2 Oracle表复杂查询
·说明
·数据分组-max,min,avg,sum,count
·扩展要求
·group by和having字句
·对数据分组的总结
6 Oracle 表的管理
6.5 oracle表的管理 -表查询(重点)
6.5.2 Oracle表复杂查询
·说明
在实际应用中经常需要执行复杂的数据统计,经常需要显示多张表的数据,现在我们给大家介绍较为复杂的select语句
·数据分组-max,min,avg,sum,count
如何显示所有员工中最高工资和最低工资
select max(sal) "最高工资",min(sal)"最 高工资" from emp;
显示最高工资以及员工名
select ename,sal from emp where sal= (select max(sal) from emp);
显示所有员工的平均工资和工资总和
select avg(sal) "平均工资",sum(sal)"工资 总和" from emp;
计算共有多少员工
select count(*) from emp;
·扩展要求
请显示工资最高的员工的名字,工作岗位
select ename,sal,job from emp where sal=(select max(sal) from emp);
请显示工资高于平均工资的员工信息
select * from emp where sal>(select avg(sal) from emp);
给那些1987年7月19之前入职并且工资小于平均工资的员工工资上浮百分之八十
select * from emp where sal>(select avg(sal) from emp); 1
·group by和having字句
group by用于对查询的结果分组统计,
having字句用于限制分组显示结果。
如何显示每个部门的平均工资和最高工资
select avg(sal),max(sal),deptno from emp group by deptno;
显示每个部门的每种岗位的平均工资和最低 工资
select avg(sal),max(sal),deptno,job from emp group by deptno,job order by deptno desc;
显示平均工资低于2000的部门号和它的平均 工资
select avg(sal),deptno from emp group by deptno having avg(sal)<2000 order by avg(sal);
·对数据分组的总结
1.分组函数只能出现在选择列表、having、order by字句中;
2.如果在select语句中同时包含有group by、having、order by那么他们的顺序是 group by,having,order by
3.在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须有一个出现在 group by字句中,否则就会出错
如:
select deptno,avg(sal),max(sal) from emp group by deptno having avg(sal)<2000 ;