程序員的成長,並不是工作年限越長越厲害,工作一段時間之後,很多事情都開始變成了重複工作,對於能力而言,幾乎毫無提高。
這個時候需要的是跳出自己的舒適區,去挑戰各種各樣的問題。所以我堅持去尋找一些題目去鍛鍊自己。1萬小時理論中,不是重複1萬小時就能變成專家,而是不斷的挑戰,這樣才能成為這個領域的專家。
題目正文
Employee 表包含所有員工,他們的經理也屬於員工。每個員工都有一個 Id,此外還有一列對應員工的經理的 Id。
+----+-------+--------+-----------+ | Id | Name | Salary | ManagerId | +----+-------+--------+-----------+ | 1 | Joe | 70000 | 3 | | 2 | Henry | 80000 | 4 | | 3 | Sam | 60000 | NULL | | 4 | Max | 90000 | NULL | +----+-------+--------+-----------+
給定 Employee 表,編寫一個 SQL 查詢,該查詢可以獲取收入超過他們經理的員工的姓名。在上面的表格中,Joe 是唯一一個收入超過他的經理的員工。
+----------+ | Employee | +----------+ | Joe | +----------+
解題思路
利用join操作,通過managerid和id做inner join之後,同一列的在加上salary的比較即可。
相對比較簡單,直接給出答案供大家參考。
解答
SELECT e1. NAME as Employee FROM employee e1 JOIN employee e2 ON e1.ManagerId = e2.Id WHERE e1.Salary > e2.Salary;