什么是sql开发人员的功能查询

时间:2017-07-27 04:18:42

标签: oracle11g oracle-sqldeveloper

我想对以下声明进行查询:
找到第九名员工第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 "

请帮助描述一下。

提前致谢

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;
相关问题