sql - 如何使用 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));
解决方案
这是否有资格作为子查询解决方案?
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 关系(我称之为employees
和salaries
):如果是这样,两个表应该组合在一个表中。
推荐阅读
- javascript - 如何使用 JavaScript 操作输入框中的值?
- c# - 如何通过 MS Graph API C# 为 ADB2C 用户重置 MFA
- arrays - 子类化 NSArray
- angular - 将@coreui/coreui-pro 更新到 3.4.2 版本后出现错误
- pine-script - 我如何在我的代码 pine 脚本中更改我的时间范围
- azure - 如何在 Azure 上的 powershell 中获取 VmSize
- android - Django-react native:请求失败,状态码为 400
- python - 在 django rest 框架中检索单个感兴趣的对象而不是 Blog.objects.all()
- tensorflow - 在 TensorFlow 2.4.1 中将 PRelu 激活实现为函数
- httpclient - dotnet 5 如何在 HttpClient 中使用 Windows 身份验证凭据