我想对以下声明进行查询:
找到第九名员工第9名最高薪水
我发现以下来自谷歌的查询
SELECT * FROM EMPLOYEE e1
WHERE N-1 =
(SELECT COUNT(e2.ORIG_SALARY) FROM EMPLOYEE e2
WHERE e2.ORIG_SALARY > e1.ORIG_SALARY)
in this query what is functioning role of " e1, e2 & N-1 "
请帮助描述一下。
提前致谢
答案 0 :(得分:1)
e1,e2
是别名。 N是数字其他。在你的情况下是9
。
此查询具有相关子查询。对于来自表员工的每一行,它计算具有较高薪水的员工的计数。为什么(N-1,9-1 = 8)因为如果你找到8名薪水较高的员工。可能目前排在第9位。
但对我来说,这个解决方案并不清楚。 我更喜欢分析函数。
Select * from (
SELECT e1.*, DENSE_RANK() OVER ( ORDER BY e1.sal) rn FROM emp e1) where rn =9;
Select * from (
SELECT e1.*, row_number() OVER ( ORDER BY e1.sal) rn FROM emp e1) where rn = 9;