码迷,mamicode.com
首页 > 其他好文 > 详细

177. Nth Highest Salary (Medium)

时间:2017-05-21 14:42:32      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:sql   function   where   returns   targe   tar   com   end   div   

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)

标签:sql   function   where   returns   targe   tar   com   end   div   

原文地址:http://www.cnblogs.com/sixu/p/6884741.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!