【问题标题】:Oracle Sql query [duplicate]Oracle Sql查询[重复]
【发布时间】:2014-02-10 07:43:22
【问题描述】:

有一个员工表有薪水列。 如何在员工列表中找到第二高的薪水? 有什么方便的方法可以找到任意第n个薪水吗??

【问题讨论】:

  • 请发布您的表的 DDL 语句、示例输入、预期输出以及您迄今为止尝试过的查询。

标签: sql oracle oracle-sqldeveloper


【解决方案1】:

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

http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions123.htm

另请参阅此问题和答案: Nth max salary in Oracle

【讨论】:

    【解决方案2】:

    第二高的薪水

    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)
    

    【讨论】:

    • 对于大型数据集效率很低
    【解决方案3】:

    在 Oracle 12c 中,您可以使用函数“NTH_VALUE”。

    【讨论】:

      猜你喜欢
      • 2012-12-22
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多