leetcode數(shù)據(jù)庫類型:181.超過經(jīng)理收入的員工何恶,難度:簡單
解答:
1、使用自聯(lián)結(jié)
? ? ? ?說實話第一眼看這個題目嚼黔,沒看懂0.0细层,仔細看了看才明白,Employee表中的name是全部姓名列隔崎,包含員工和經(jīng)理今艺,而managerId列是經(jīng)理的編號,翻譯過來就是第一行Joe的經(jīng)理編號是3=Sam爵卒,第二行Henry的經(jīng)理編號是4=Max虚缎,第三、四行是經(jīng)理所以在第四列沒有值钓株。那就可以開始想了实牡,題目是查出salary比經(jīng)理要高的員工,這種比***高的題目基本都是聯(lián)結(jié)題轴合,這道題就是自聯(lián)結(jié)创坞。
? ? ? ?上表是自聯(lián)結(jié)后的表,產(chǎn)生了笛卡爾積(笛卡爾積又稱直積受葛,表示為X*Y题涨,第一個對象是X的成員而第二個對象是Y的所有可能有序?qū)Φ钠渲幸粋€成員偎谁,假設(shè)集合A={a,b}纲堵,集合B={0,1,2,}巡雨,則這兩個集合的笛卡爾積為{(a,0)、(a,1)席函、(a,2)铐望、(b,0)、(b,1)茂附、(b,2)}),本題中正蛙,會產(chǎn)生4*4=16行記錄,其中前4列為a表营曼,記錄的是員工信息包含經(jīng)理(經(jīng)理也屬于員工捌寡椤),后四列為b表蒂阱,也可看成是員工表徊件,只不過表現(xiàn)形式不同,第一種方法難理解的就是a.ManagerId = b.Id這句吧蒜危,這個我也想了一會哦,其實把上面的表看懂就行了睹耐,a.ManagerId就是員工的經(jīng)理編號辐赞,b.Id也是經(jīng)理編號,照著表對一下就明白了硝训。
2响委、使用子查詢
? ? ? ?子查詢也可實現(xiàn)第一種方法的結(jié)果,只不過子查詢的時間要長一些窖梁,Ted看了一下赘风,要長4倍多,作為后備方法纵刘,知道可以這么寫就行了邀窃,具體用哪種,看你們個人習(xí)慣吧假哎。