看板管理
看板設定
Icon/small16x16/color/forum infoCreated with Sketch.看板資訊
副版主管理
進階設定
版規設定
編輯版規
違規項目與停權天數設定
檢視版規版本記錄
文章管理
文章檢舉
留言檢舉
其他
管理活動記錄
大家好,小弟是SQL新手
最近才開始碰這個領域,但是碰到了許多問題
因為是自學,身邊也沒有學這塊的人
所以沒什麼人可以問QQ
希望 有大大能幫我解惑

問題1.
如何刪除表中Salary的最大值
表1. Employee
Id Salary
1 100
2 200
3 300
要求結果:
Id Salary
1 100
2 200
我的SQL-
DELETE
FROM Employee
WHERE
Salary = (SELECT Max(Salary) From Employee)

問題2.
請找出Salary第二大的值

要求結果:
SecondHighestSalary
200

其實我這題是想要先把最大值刪除
之後再顯示剩餘資料的最大值
SELECT
Max(Salary) AS SecondHighestSalary
FROM
Employee
這樣就可以顯示第二大值了
只是上面沒搞好 沒法寫下去
上面問題1的這個打法 它一直出錯
有人可以幫我指正我哪裡寫錯了嗎

然後下面是Leetcode大神寫的版本
小弟我爛 沒學那麼深 看不懂
求大神解釋(T W T

版本1.
Select Salary As SecondHighestSalary
from Employee e
where
2 = (select count(distinct(e1.salary)) from Employee e1 where e1.salary >= e.salary)
union
Select null As SecondHighestSalary
Limit 1

版本2.
select
isnull(salary, null) as SecondHighestSalary
from
(
select
isnull(salary, null) as salary,
dense_rank()over(order by Salary desc) as rank
from employee
) as t
where t.rank = 2

版本3.
select
max(Salary) as SecondHighestSalary
from
Employee
where
Salary not in (select max(Salary) from Employee );

共 5 則回應

已經刪除的內容就像 Dcard 一樣,錯過是無法再相見的!
0
你要不要考慮轉發到軟體工程師板?
0
原來有這個版😂
太久沒用都不知道
已經刪除的內容就像 Dcard 一樣,錯過是無法再相見的!
已經刪除的內容就像 Dcard 一樣,錯過是無法再相見的!
回應...