oracle查询EMP表中各个部门工资第二高的信息,注意是各个部门,不能指定单个部门
1个回答
展开全部
第一步:取出各个部门第一高工资的员工的empno
select a.empno from emp where a.deptno=b.deptno and a.sal=b.sal
(select deptno,max(sal) sal from emp group by deptno) a;
第二步:取出各个部门第一高工资除了上述的empno,即第二高工资
select deptno,max(sal) from emp where empno not in
)select a.empno from emp where a.deptno=b.deptno and a.sal=b.sal
(select deptno,max(sal) sal from emp group by deptno) )
group by deptno;
select a.empno from emp where a.deptno=b.deptno and a.sal=b.sal
(select deptno,max(sal) sal from emp group by deptno) a;
第二步:取出各个部门第一高工资除了上述的empno,即第二高工资
select deptno,max(sal) from emp where empno not in
)select a.empno from emp where a.deptno=b.deptno and a.sal=b.sal
(select deptno,max(sal) sal from emp group by deptno) )
group by deptno;
更多追问追答
追问
你写的有问题,而且思路也太偏颇,假设emp表中有10个部门,每个部门有1000人,我要查各个部门工资第59位高的难道你要取出58次,而且实际中数据库中的数据一般也允许取出移除,你取出了第一的,那么第二也就变成第一了,所以你的这种方法只是就题论题而已,不是十分科学,并不能存在普遍的方法,希望你能帮我想想怎么用普通方法来做,
你写的有问题,而且思路也太偏颇,假设emp表中有10个部门,每个部门有1000人,我要查各个部门工资第59位高的难道你要取出58次,而且实际中数据库中的数据一般也不允许取出移除,你取出了第一的,那么第二也就变成第一了,所以你的这种方法只是就题论题而已,不是十分科学,并不能存在普遍的方法,希望你能帮我想想怎么用普通方法来做,不过还是谢谢你
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询