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 閱讀(3384) 評論(1)  編輯  收藏 所屬分類: 數據

          評論

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

          mark。  回復  更多評論   

          主站蜘蛛池模板: 福州市| 平潭县| 阿合奇县| 鹤壁市| 错那县| 济南市| 弥勒县| 临江市| 凤凰县| 汾阳市| 浦东新区| 潢川县| 吉隆县| 星座| 广河县| 汾西县| 靖江市| 海城市| 吉安市| 襄汾县| 堆龙德庆县| 鹿泉市| 天峻县| 大邑县| 新郑市| 襄垣县| 六盘水市| 金坛市| 祁连县| 永新县| 清水县| 太湖县| 陇西县| 宁波市| 米易县| 马公市| 故城县| 安丘市| 元谋县| 巴塘县| 增城市|