2017/7/2 今天挑戰了兩道sql相關的題
乙個是很簡單的兩張表之間的關聯查詢 left join 就能搞定.
第二題也不算難,而且思路有多種
題目是這樣的 :
+----+--------+| id | salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
求 : 排名第二的salary
排第一或者最後一名當然很簡單啦,不過就是 max() 和 min() 嗎,當然求倒數第二位沒有這麼簡單了.稍微繞一點
思路很多 : 第一種 我用的oracle 寫的
select t.* from (select mm."id",rank()over(order by mm."id" desc) as rank
from m_team mm) t
where rank<>1
and rownum <= 1
重點在 rank()over() 思路,先排序,排序後去掉結果集中的第一名,再查詢此時的第一名,當然就是第二名了
官網上點讚最多的答案 :
select max(salary)from employee
where salary < (select max(salary) from employee)
非常簡潔,效率應該比我那個要高點,很厲害
思路是一樣的
作者自己指出這樣查的話如果表中的salary有null的存在並且剛好是排第二的,那麼,返回的結果將是 null
網友的魔改 :
select ifnull( (select distinct e1.salary from employee e1where (select count(distinct e2.salary ) from employee e2 where e2.salary > e1.salary) = 1) , null)
嘖嘖,很厲害
今天就這樣吧
這是乙個開始
準備正式的應對職業之路,是從劉未鵬的部落格開始 在此之前,從事的工作比較漫不經心,因為不熱愛的緣故,也只是工作而已 經朋友推薦,瀏覽了劉的部落格,一下仿似給自己找到了乙個出口。長期以來自己不成條理,漫無目標的思考,找到了乙個可以依附的體系 在新下來的日子裡,我認真的做事,努力學習周邊,在漂亮完成兩個...
嗯,乙個開始
我是乙個挺排斥寫東西的人,總覺得寫出來的東西是錯的會誤導大家,所以乾脆就在心裡放著好了,這大概 於我幼時經常被父母批評 沒有怪他們的意思 和自己的高度不夠,如今的我也差不多還有一年就要找工作了,想把這段時間的成長過程記錄下來,分享給自己,也分享給大家,感恩!從本科生到研究生的轉變,讓我痛苦了一段時間...
又是乙個開始
前幾天有位兄弟對開學完全沒有心理準備,加上事多,有點不正常,當然這背後還隱藏著八卦。我的事也不少,包括煩心的退宿舍,找房子,鬧心。還好我有乙個能幫我分憂解難的lp,幫我渡過了難關 下午就要回浦口上課了,結束了3個月的鼓樓生活,還是有點不捨的。學院研究生的課程的特點就是,本科課程名加上 高階 兩字。高...