【发布时间】:2014-02-10 07:43:22
【问题描述】:
有一个员工表有薪水列。 如何在员工列表中找到第二高的薪水? 有什么方便的方法可以找到任意第n个薪水吗??
【问题讨论】:
-
请发布您的表的 DDL 语句、示例输入、预期输出以及您迄今为止尝试过的查询。
标签: sql oracle oracle-sqldeveloper
有一个员工表有薪水列。 如何在员工列表中找到第二高的薪水? 有什么方便的方法可以找到任意第n个薪水吗??
【问题讨论】:
标签: sql oracle oracle-sqldeveloper
Oracle 有排名功能。根据此函数的结果,您可以选择第 n 个数字。
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions123.htm
另请参阅此问题和答案: Nth max salary in Oracle
【讨论】:
第二高的薪水
SELECT MAX(Salary) FROM Employee
WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee )
第 N 高薪
SELECT *
FROM Employee Emp1
WHERE (N-1) = (
SELECT COUNT(DISTINCT(Emp2.Salary))
FROM Employee Emp2
WHERE Emp2.Salary > Emp1.Salary)
【讨论】:
在 Oracle 12c 中,您可以使用函数“NTH_VALUE”。
【讨论】: