LeetCode-181 超过经理收入的员工---SQL语句实现及详解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_37189082/article/details/100362851

题目:

         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      |
+----------+

 思路:

         首先要看懂Employee表,ManagerId列是该名员工对应经理的Id。题意是找出超过对应经理收入的员工。首先要想到使用连接查询,同一张表使用两次进行连接,说明要使用内连接(inner join)中的自连接。内连接可以简写成 join,自连接就是同一张表起了两个别名,用两个别名进行操作。

select a.name as Employee from Employee a inner join Employee b 
where a.ManagerId = b.Id AND a.Salary > b.Salary;

猜你喜欢

转载自blog.csdn.net/qq_37189082/article/details/100362851
今日推荐