查询每个部门工资前三名的员工信息

问:Oracle的EMP表,查询每个部门工资前三名的员工信息,如何写?? 
解答:(通用sql)

[java]  view plain  copy
  1. select deptno, ename, sal      
  2. from emp e1     
  3. where      
  4.    (  
  5.     select count(1)     
  6.     from emp e2     
  7.     where e2.deptno=e1.deptno and e2.sal>=e1.sal  
  8.    ) <=3 /*这里的数值表示你想取前几名*/  
  9. order by deptno, sal desc;    



Oracle查询:(利用分区功能) 
[java]  view plain  copy
  1. select * from         
  2. (select deptno,ename,sal,row_number() over (partition by deptno        
  3.     order by sal desc) rn         
  4. from emp)         
  5.    where rn<3;  

你可能感兴趣的:(数据库)