2016-07-26 54 views

回答

0

使用row_number()分析功能让它更容易:

select e.empno, 
     e.ename, 
     e.sal, 
     d.deptno, 
     d.dname, 
     d.loc 
    from Deptno d 
    join (select e.*, 
       row_number() over (
       partition by e.deptno 
        order by sal desc) as rn 
      from Employee e) e 
    on e.deptno = d.deptno 
    and e.rn = 1 

在这种情况下,row_number()函数将返回的1对各部门的工资最高的员工的值,所以这就是为什么连接条件包括e.rn = 1到限制结果给那些雇员。

+0

e。*代表什么..... – Dev

+0

这意味着,从'e'中选择所有列。而'e'只是'Employee'表的别名,所以它选择所有Employee列。 – sstan

0

试试这个:

select empno,ename,deptno,sal from 
(
    select e.empno,e.ename,d.Deptno,sal,max(sal) over (partition by d.deptno order by null) max_sal from Employee e,Deptno d where e.deptno = d.deptno 
)where sal=max_sal 

这里max_sal按部门

相关问题