假設資料庫內有一欄位為薪資欄位,要怎麼用sql語法找出第二高的薪資呢?

大家都知道sql語法中有一個max()的語法可以幫助我們取得最大值,但如果今天我們需要取得第二大的呢?

這裡有兩個方法

(1)

SELECT max(Salary)
FROM Employee
WHERE Salary < (SELECT max(Salary) FROM Employee)

使用max(),並且限制條件為比最大的值還要小,就可以順利找到啦!

(2)

 

select (
select distinct Salary from Employee order by Salary Desc limit 1 offset 1
)as SecondHighestSalary

 

使用order by, limit,offset

通常limit offset都會伴隨order by 出現

相信大家都對order by 排列不陌生

limit 則是限制列出的筆數

ex: limit 1 即為列出一筆資料

offset 則是忽略的資料筆數

因此這邊的語法就是利用order by排列後,取得一筆最大的資料,但是offset會忽略第一筆資料,因此我們就可以得到第二高的薪資了

 

此題在leetcode也有出現

 

arrow
arrow
    創作者介紹
    創作者 kevin077050 的頭像
    kevin077050

    kevin077050的部落格

    kevin077050 發表在 痞客邦 留言(0) 人氣()