SQL语句

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

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

Oracle查询:(利用分区功能) 
select * from         
  1. (select deptno,ename,sal,row_number() over (partition by deptno        
  2.     order by sal desc) rn         
  3. from emp)         
  4.    where rn<3;  
原文地址:https://www.cnblogs.com/du-0210/p/9293027.html