Change Dir

先知cd——热爱生活是一切艺术的开始

统计

留言簿(18)

积分与排名

“牛”们的博客

各个公司技术

我的链接

淘宝技术

阅读排行榜

评论排行榜

Leetcode-Database-177-Nth Highest Salary-Medium

题目地址:https://oj.leetcode.com/problems/nth-highest-salary/

 

这个题目其实是176的扩展,刚才不是要找第二大的salary吗,那好,现在直接扩展到任意,第N大,而且这次是要写一个FunctionN作为参数。表还是之前的Employee表。

+----+--------+
| Id | Salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+

 

 

 

我不知道为什么这个题目的通过率那么低,但是事实是使用176题那篇文章的“错误”做法即可解掉这个题目。注意limit是从0开始,所以变量要默认自减1

 

CREATE FUNCTION getNthHighestSalary(N INTRETURNS INT
BEGIN
    declare n1 int;
    set n1 = N-1;
  RETURN (
      # Write your MySQL query statement below.
      select
        Salary
      from(
        select distinct Salary from Employee
      )t
      order by Salary desc
      limit n1,1
     
  );
END

 

大写的部分是题目已经给的框架,我们只需要在Return语句里填写内容即可,我declare了一个变量,不知道是否是一个hack手段,但是it works.

 

当然本着在大数据平台下sql的经验,如果换做是在hive下写这个,思路是什么呢?

1,我建议直接写一个UDAF解决。

2,不具备UDAF能力的话,可以在一个key下做sort by后,把他们group_concat或者wm_concat起来,然后getnitem即可,当然这会利用到hive的默认的几个UDAFUDF

 

思路肯定有很多,欢迎大家一起来share~

posted on 2015-01-27 16:59 changedi 阅读(3341) 评论(1)  编辑  收藏 所属分类: 数据

评论

# re: Leetcode-Database-177-Nth Highest Salary-Medium 2015-01-31 18:00 京山游侠

mark。  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: