Leetcode Database: #181 Employees Earning More Than Their Managers
题目
#181 Employees Earning More Than Their Managers
解题思路
这是成功率最高的一题。需要想办法查找出某人对应 Manager 的 Salary,并放在同一个表中,然后比较 Salary 就很方便了。可以利用 INNER JOIN
构造测试数据
1 | CREATE TABLE IF NOT EXISTS Employee ( |
预期结果:
1 | +----------+ |
一种答案
完整答案
1 | -- Runtime: 1552 ms |
我们来分步看,第一步先把所有需要的列查询出来,使用 INNER JOIN
1 | SELECT |
其结果是
Id | Name | Salary | ManagerId | ManagerSalary |
---|---|---|---|---|
1 | Joe | 70000 | 3 | 60000 |
2 | Henry | 80000 | 4 | 90000 |
第二步就简单了,加上 WHERE a.Salary > b.Salary
即可,并删除第一步多余的列。
另一种答案
和上面答案其实一样的,只是不显式写出 INNER JOIN
而是 FROM
中又两个表,效率应该是一致的。个人觉得还是显式写出 INNER JOIN
比较好,语法清晰。
1 | SELECT |
本博客微信公众号