Display empno,ename,sal,deptno,dname,location,显示各部门最高薪员工

Display empno,ename,sal,deptno,dname,location, Display highest paid employee of every department

如何使用 empno,ename,sal,deptno,dname,location 显示每个部门的最高薪员工....

select e.empno,e.ename, max(e.Sal),d.Deptno
  from DEPTNO d 
 inner join emp e
    on d.Deptno = e.DEPTNO 
 group by d.DEPTNO;   

员工table:

部门号table:

使用 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() 函数将为每个部门的最高薪员工 return 取值 1,这就是为什么加入条件包括 e.rn = 1 将结果限制为这些员工。

试试这个:

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 return 按部门划分的最高工资