【发布时间】:2020-06-04 16:15:09
【问题描述】:
我正在尝试了解以下查询,它是如何工作的。
SELECT *
FROM Employee Emp1
WHERE (N-1) = (
SELECT COUNT(DISTINCT(Emp2.Salary))
FROM Employee Emp2
WHERE Emp2.Salary > Emp1.Salary
)
假设我有5 不同的薪水,并希望获得3rd 最大的薪水。那么内部查询会先运行,然后外部查询?
我很困惑它是如何在 sql 引擎中完成的。很想知道。因为如果它的3rd 最大然后3-1 = 2,那么2 也需要与内部计数匹配。内部计数是如何运行的。
任何人都可以解释它的工作原理吗?
【问题讨论】:
-
DISTINCT不是函数。跳过那些多余的括号以编写更清晰的代码,即只需执行SELECT COUNT(DISTINCT Emp2.Salary)。 -
我会使用子查询来返回第三大不同的薪水。
-
可能是接受答案的idsa。
标签: sql oracle subquery greatest-n-per-group