我正在尝试查询一个返回每个项目薪水最高的员工姓名的查询。我有3张桌子:
我查询了
Select pname, ename, sal
from EMP, Proj_emp, PROJ
where emp.empno= proj_emp.empno and proj_emp.projno=proj.projno
and sal = (Select distinct Max(sal) from emp);
但是它只会返回一个项目,其中薪水最高的人是谁。例如
Pname Ename Salary
PROJECT2 KING 5000
我想和每个项目中收入最高的人一起获得所有项目。我敢打赌,我在该嵌套查询中遗漏了一些东西,但我不知道如何解决它。您能帮我吗?
我想举个例子:
Pname Ename Salary
PROJECT2 KING 5000
PROJECT1 KING 4000
PROJECT3 BARTOSZ 2000
PROJECT4 ANDY 1340
答案 0 :(得分:2)
使用大多数dbms支持的row_number()
with cte as
( select p.Pname,e.Ename,e.salary
,row_number()over(partition by pe.Projno order by e.salaray desc) rn
from Proj_Emp pe join Proj p on pe.Projno=p.Projno
join Emp e on e.Empno=pe.Empno
) select * from cte where rn=1