gpt4 book ai didi

sql - 如何返回表中每一行的 X 最大行

转载 作者:行者123 更新时间:2023-12-04 20:35:48 26 4
gpt4 key购买 nike

假设我有两个表(如下)。编写选择以获取每个部门薪水最高的 2 名员工的最佳方法是什么?假设可能有很多部门。

输出:

employee_name | salary | department_id
John | 65000 | 1
Sally | 60000 | 1
Lucy | 40000 | 2
James | 80000 | 3
Harry | 65000 | 3

表格:

员工

employee_name | salary | department_id
John | 65000 | 1
Sally | 60000 | 1
Connor | 55000 | 1
Judy | 55000 | 1
Lucy | 40000 | 2
James | 80000 | 3
Harry | 65000 | 3
Penny | 56000 | 3

部门

department_id | name
1 | Sales
2 | Marketing
3 | IT

最佳答案

此类选择的最佳选择是OUTER APPLY。它专为此类工作而设计:

select d.department_id, oa.employee_name, oa.salary
from Departments d
outer apply(select top 2 e.employee_name, e.salary
from Employee e
where d.department_id = e.department_id
order by e.salary desc) oa

如果您不想让部门没有员工,那么只需将 outer apply 更改为 cross apply

关于sql - 如何返回表中每一行的 X 最大行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30526186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com