【Leetcode】Mysql查詢第N高的薪水

編寫一個 SQL 查詢,獲取 Employee 表中第 n 高的薪水(Salary)。

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

例如上述 Employee 表,n = 2 時,應返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查詢應返回 null。

+------------------------+
| getNthHighestSalary(2) |
+------------------------+
| 200                    |
+------------------------+

答案:

# 創建函數getNthHighestSalary,參數N為INT,返回類型為INT
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
# 開始
BEGIN
# Decalre 是定義變量的用法,所以定義M 為INT類型
Declare M INT;
# 如果在select查詢語句中直接寫入N-1 會語法報錯。所以通過創建存儲函數來實現。
#另外由于選取的是第N高的薪水,采取的是逆序排序,取第N個。
# 根據逆序排序的用法,本應該寫入DESC limit n-1,1(現在是DESC limit M,1) 
#所以意思是逆序排序從下標n-1的元素開始取1個。當我們輸入2的時候,第2高的薪水,
#就要選擇下標為1的屬性salary,取1個值。
#(limit m,n ,其中m的計數是從0開始,表示第一條)

SET M=N-1
    RETURN(
          select discintct salary from employee order by Salary desc limit M,1
);
END







最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。