nth highest salary leetcode

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                    |
 +------------------------+


solution:
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
     DECLARE M INT;
     SET M=N-1;
     RETURN (
     # Write your MySQL query statement below.
     SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT M, 1
     );
END


CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
  RETURN (
      # Write your MySQL query statement below.
      SELECT MAX(Salary) FROM Employee E1
      WHERE N - 1 =
      (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 =
      (SELECT COUNT(DISTINCT(E2.Salary)) FROM Employee E2
      WHERE E2.Salary >= E1.Salary)
  );
END

https://github.com/woshiyexinjie/leetcode-xingit

相關文章
相關標籤/搜索