解决方案 »

  1.   


    select a.领导最高工资,b.普通员工最高工资 from
    (select sal 领导最高工资,rownum rn from(
    Select distinct b.ename,b.empno,b.sal,a.mgr from emp a,emp b 
    where a.mgr=b.empno order by b.sal desc)
    where rownum=1) a,
    (
    select sal 普通员工最高工资,rownum rn from(
    Select distinct a.ename,b.empno,a.sal,a.mgr from emp a,emp b 
    where a.mgr=b.empno order by a.sal desc)
    where rownum=1
    ) b
    where a.rn=b.rn
      

  2.   

    emp表本身是多层级的,有可能一个人即使其他人的下属,同时又是其他人的经理,这部分人算经理还是普通员工?1#你的两个子查询a、b都是只有一条数据,where条件可以去掉了
    select * from(
    select T.*,
    row_number() over(
        partition by decode(case when exists (select 1 from emp where mgr=t.empno) then '经理' else '员工' end) 
        order by sal desc) rn
    from emp T
    )where rn=1