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

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

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

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

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

答案:

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

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







最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容