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 按部门划分的最高工资
如何使用 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 按部门划分的最高工资