1. 程式人生 > >177. Nth Highest Salary (Medium)

177. Nth Highest Salary (Medium)

desc nth logs esc employee example leetcode turn begin

Source: https://leetcode.com/problems/nth-highest-salary/#/description
Description:

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
  RETURN (
        select DISTINCT SALARY from (
            select u1.id,u1.salary,u2.jishu from 
            (
select * from Employee)u1 inner join ( select t1.id, count(*) as jishu from ( select e1.id,e1.salary from (select salary,min(id) as id from Employee group by salary) e1 inner JOIN
(select salary,min(id) as id from Employee group by salary)e2 on e1.salary <= e2.salary )t1 group by t1.id ) u2 on u1.id = u2.id )p where p.jishu =N ); END

177. Nth Highest Salary (Medium)