小屋創作

日誌2023-09-04 14:49

【Leetcode】176. Second Highest Salary

作者:Chris

Leetcode題目網址:176. Second Highest Salary
難度:Medium

表格屬性:
Column Name Type
id int
salary int

原文:
Write a solution to find the second highest salary from the Employee table. If there is no second highest salary, return null (return None in Pandas).

The result format is in the following example.

個人翻譯(非逐字翻譯):
編寫一個SQL程式碼,從Employee(員工)表格中,找尋Employee(薪資)欄位中第二高的數值資料,如果沒有數值則回傳null,在Pandas中則以None回傳。

輸入:
Employee table
id salary
1 100
2 200
3 300

輸出:
SecondHighestSalary
200

個人理解
從中國的知乎上來看,是從join的方式讓人比較好理解。而這裡用到的是子查詢和Limit來限制輸出筆數、用Max來找出較高的數值。

而知乎的作者也提到,必須使用(distinct),不然將會回傳多個值,而非單一值。

接著使用(order by)進行排序,排列順序由大至小(desc)。

主要寫法是limit 1,1 (index, count),但不支援(index, count)寫法的(例如:PostgreSQL)就必須用offset做替代。

最後使用(as)將名稱改為SecondHighestSalary。
程式碼
select (
    select distinct salary
    from Employee
    order by Salary desc /*由大至小進行排序*/
    limit 1 offset 1 /*類似limit 1,1 (index, count)*/
) as SecondHighestSalary; /*更改欄目名稱*/
影片介紹的另外一種寫法
先透過max取出最大值,再用Not in去取不符合的資料。
select max(salary) as SecondHighestSalary
from Employee
where salary not in (select max(salary) from Employee);

2

0

LINE 分享

相關創作

【SQL】一些常用的SQL語法

【Leetcode】184. Department Highest Salary

我 檸檬水 找錢

留言

開啟 APP

face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】