首页 > 解决方案 > 如何使用 SUBQUERIES 找到每个部门的最高薪水

问题描述

我对此真的很陌生,这个特殊的问题已经困扰了我好几天了。我确实知道有类似的问题,但我一直想知道如何在子查询中完成。

工资表 [Emp_ID] [SalaryPM] 001 | 10,500 002 | 50,000 003 | 8,000 004 | 10,000

DEPT TABLE

[Emp_ID] [Dept_ID] 001 | 002 | B 003 | C 004 | C

我希望它看起来像这样

[Emp_ID] [Dept_ID] [SalaryPM] 001 | 一个 | 10,000 002 | 乙| 50,000 004 | C | 10,000

到目前为止我已经尝试过,但它只给出了员工的最高薪水##

SELECT * FROM DEPT WHERE EMP_ID IN (SELECT Emp_ID FROM SALARY WHERE SalaryPM = (SELECT MAX(SalaryPM) FROM SALARY));

标签: sqloraclesubquerygreatest-n-per-group

解决方案


这是否有资格作为子查询解决方案?

select *
from (
    select s.*, e.deptid, 
        rank() over(partition by e.dept order by s.salaries desc) rn
    from employees e
    inner join salaries s on s.id = e.id
) rn
where rn = 1

注意:你的看起来不太好。您显示的数据表明两个表之间存在 1-1 关系(我称之为employeessalaries):如果是这样,两个表应该组合在一个表中。


推荐阅读