這是一個系列文章,這個系列的理念是
通過一道題,搞懂一類題。涵蓋了
SQL面試最常考的知識點。搞懂這些題,
面試時工作中sql不可能有問題。文章分為引入問題-完整解析-答案-leetcode題和答案-知識點拓展-BAT等大廠面試真題幾個部分。
希望能幫你全方位的弄懂。有問題可以留言,碼字不易,寫一篇要好幾個小時,希望能得到點贊收藏哦。
一、問題-對應leetcode 181.超過經理收入的員工
現有一張表,裡面包含學生編号,成績,課代表編号。課代表編号表示這門課程的課代表的學生編号,如果某同學是課代表,則他的課代表編号就是null。
現在要求找出課程成績大于課代表成績的同學的學生編号和成績。
二、準備
三、解答
[解題思路]
要求找出課程成績大于課代表成績的所有同學的學生編号和成績。我們可以使用自連接配接兩張表。
課代表編号代表作為課代表的某位同學的編号,它是某位同學的學生編号。是以a.學生編号=b.課代表編号
另外還需要判斷不是課代表的同學的成績需要大于課代表的成績。是以a.成績 > b.成績
[代碼]
[本題答案]
[leetcode題庫問題-181.超過經理收入的員工 ]
Employee
表包含所有員工,他們的經理也屬于員工。每個員工都有一個 Id,此外還有一列對應員工的經理的 Id。
給定
Employee
表,編寫一個 SQL 查詢,該查詢可以擷取收入超過他們經理的員工的姓名。在上面的表格中,Joe 是唯一一個收入超過他的經理的員工。