編寫乙個 sql 查詢,獲取 employee 表中第二高的薪水(salary) 。
例如上述 employee 表,sql查詢應該返回 200 作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回 null。
方法一:使用子查詢和 limit 子句
演算法將不同的薪資按降序排序,然後使用 limit 子句獲得第二高的薪資。
select
distinct
salary as secondhighestsalary
from
employee
order
by salary desc
limit
1offset
1
然而,如果沒有這樣的第二最高工資,這個解決方案將被判斷為 「錯誤答案」,因為本表可能只有一項記錄。為了克服這個問題,我們可以將其作為臨時表。
select
(select
distinct
salary
from
employee
order
by salary desc
limit
1offset1)
as secondhighestsalary
;
方法二:使用 ifnull 和 limit 子句解決 「null」 問題的另一種方法是使用 「ifnull」 函式,如下所示。
select
ifnull(
(select
distinct salary
from employee
order
by salary desc
limit
1offset1)
,null
)as secondhighestsalary
力扣資料庫題目176第二高的薪水
力扣資料庫題目176第二高的薪水 編寫乙個 sql 查詢,獲取 employee 表中第二高的薪水 salary id salary 1 100 2 200 3 300 例如上述 employee 表,sql查詢應該返回 200 作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回 null。題...
力扣資料庫 176 第二高的薪水
create table ifnot exists employee id int salary int truncate table employee insert into employee id,salary values 1 100 insert into employee id,salar...
第二高的薪水
第二高的薪水 編寫乙個 sql 查詢,獲取employee表中第二高的薪水 salary id salary 1 100 2 200 3 300 例如上述employee表,sql查詢應該返回200作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回null。secondhighestsalar...