日誌2023-09-04 14:49
【Leetcode】176. Second Highest Salary作者:Chris
Column Name | Type |
id | int |
salary | int |
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); |