LeetCode刷題之旅【數據庫篇】簡單 - 4:第N高的薪水

2019年11月15日

目錄

題目 第N高的薪水

解題1

解題2


題目 第N高的薪水

 

解題1

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
    SET N = N-1;
  RETURN (
      # Write your MySQL query statement below.
    SELECT (SELECT DISTINCT
            Salary
        FROM
            Employee
        ORDER BY Salary DESC
        LIMIT 1 OFFSET N
    ) as SecondHighestSalary
  );
END

 

解題2

查詢思路類似求第二高的薪水,需注意考慮N不合理的情況。測試第一輪就遇到N爲0的情況,所以加上了處理邏輯。詳細如下:

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
    DECLARE P1 INT; -- 第P1高的薪水
    DECLARE P2 INT; -- 取P1-1後的P2個值
    -- 當N<1時,P1會爲負數,採用IF調整爲0,另此時結果不存在,設置P2爲0
    IF (N<1)
      THEN SET P1 = 0, P2 = 0;
    ELSE SET P1 = N-1, P2 = 1;
    END IF;
    
    RETURN (
        -- 若不存在第N高的薪水,取NULL
        SELECT IFNULL(
            (
                -- 去除重複值,倒序取第P1大的值後P2個值
               SELECT DISTINCT Salary
                FROM Employee
                ORDER BY Salary DESC
                LIMIT P1, P2
            ), NULL
        ) AS SecondHighestSalary   
    );
END

作者:rotcod-wang
鏈接:https://leetcode-cn.com/problems/nth-highest-salary/solution/jing-que-da-an-han-zhu-shi-kao-lu-nbu-he-li-qing-k/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章