首页 > 数据库技术 > 详细

Leetcode-Database-177-Nth Highest Salary-Medium

时间:2015-01-28 02:02:07      阅读:355      评论:0      收藏:0      [点我收藏+]

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~



Leetcode-Database-177-Nth Highest Salary-Medium

原文:http://www.blogjava.net/changedi/archive/2015/01/27/422482.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!