select * from hr.employees a
where employee_id in (select employee_id
    from hr.employees
    where department_id=a.department_id and rownum<3)
order by department_id;

解决方案 »

  1.   

    mschen(co_ok):ROWNUM是不受ORDER BY 子句影响的吧,所以order by department_id可不可以不要呢?
    执行的结果应该是一样的
      

  2.   

    order by department_id在这里是没有任何用的,只是为了最后显示的清楚明了.
      

  3.   

    每个部门里薪水最高的两个人
    select * from (select t.* ,rank() over(partition by deptno order by sal desc ) rn from emp t ) where rn<3