Oracle Sql查询

Oracle Sql查询,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,有一个包含“薪资”列的员工表。 如何在员工名单中找到第二高的工资?? 有什么方便的方法可以找到第n个数字的薪水吗?Oracle有一个排名函数。根据此功能的结果,您可以选择第n个数字 另请参见此问题和答案: 第二高工资 SELECT MAX(Salary) FROM Employee WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee ) SELECT * FROM Employee Emp1 WHERE (N-1) = ( SELE

有一个包含“薪资”列的员工表。 如何在员工名单中找到第二高的工资??
有什么方便的方法可以找到第n个数字的薪水吗?

Oracle有一个排名函数。根据此功能的结果,您可以选择第n个数字

另请参见此问题和答案: 第二高工资

SELECT MAX(Salary) FROM Employee
WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee )
SELECT * 
FROM Employee Emp1
WHERE (N-1) = ( 
SELECT COUNT(DISTINCT(Emp2.Salary))
FROM Employee Emp2
WHERE Emp2.Salary > Emp1.Salary)
第n高薪

SELECT MAX(Salary) FROM Employee
WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee )
SELECT * 
FROM Employee Emp1
WHERE (N-1) = ( 
SELECT COUNT(DISTINCT(Emp2.Salary))
FROM Employee Emp2
WHERE Emp2.Salary > Emp1.Salary)

在Oracle 12c中,您可以使用函数“NTH_VALUE”来实现此功能。

请发布表的DDL语句、示例输入、预期输出以及您迄今为止尝试过的查询。对于大型数据集,效率非常低