zoukankan      html  css  js  c++  java
  • [LeetCode#177]Nth Highest Salary

    Write a SQL query to get the nth highest salary from the Employee table.
    
    +----+--------+
    | Id | Salary |
    +----+--------+
    | 1  | 100    |
    | 2  | 200    |
    | 3  | 300    |
    +----+--------+
    For example, given the above Employee table, the nth highest salary where n = 2 is 200. If there is no nth highest salary, then the query should return null.
    
    +------------------------+
    | getNthHighestSalary(2) |
    +------------------------+
    | 200                    |
    +------------------------+
    

    解法一:

    CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
    BEGIN
      SET N = N - 1;
      RETURN (
          SELECT DISTINCT Salary FROM Employee GROUP BY Salary
          ORDER BY Salary DESC LIMIT 1 OFFSET N
      );
    END

    解法二:

    CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
    BEGIN
      RETURN (
          SELECT MAX(Salary) FROM Employee E1
          WHERE N =
          (SELECT COUNT(DISTINCT(E2.Salary)) FROM Employee E2
          WHERE E2.Salary >= E1.Salary)
      );
    END

     解法三:

    CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
    BEGIN
      RETURN (
          SELECT MAX(Salary) FROM Employee E1
          WHERE N - 1 =
          (SELECT COUNT(DISTINCT(E2.Salary)) FROM Employee E2
          WHERE E2.Salary > E1.Salary)
      );
    END
                  
    申明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    2017/7/26 SCJP英语学习
    JSF(JavaServer Faces)简介
    Java回话技术
    2.2 对象深拷贝、浅复制、序列化
    编码与解码
    pycharm 教程(一)安装和首次使用
    Java Eclipse进行断点调试
    详细介绍如何在Eclipse中使用SVN
    SVN客户端安装与使用
    炸鸡
  • 原文地址:https://www.cnblogs.com/lsyb-python/p/11011216.html
Copyright © 2011-2022 走看看