我需要编写一个查询,该查询将返回公司中薪水第三高的员工。
我试图用子查询来完成这个,但无法得到答案。我的尝试如下:
select Max(salary)
from employees
where Salary not in
(select Max(salary)
from employees
where Salary not in
(select Max(salary)
from employees));
我的想法是我可以使用 2 个子查询来区分第一高和第二高的薪水。然后我可以简单地选择剩下的 MAX()
工资。这是一个不错的选择,还是有更好的方法来实现这一目标?
原文由 Prateek Chaudhary 发布,翻译遵循 CC BY-SA 4.0 许可协议
选择 \* 从(
选择工资,DENSE_RANK()
OVER(ORDER BY Salary DESC)r FROM Employee)
其中 r=&n;
找到第三高的薪水集合 n = 3