Database LeetCode Employees Earning More Than Their Managers

本文介绍了一种SQL查询技巧,通过自连接的方式找出薪资高于其直接上司的员工名单。利用内连接和不等值连接,实现了从单一员工表中筛选出符合条件的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

The Employee table holds all employees including their managers. Every employee has an Id, and there is also a column for the manager Id.

+----+-------+--------+-----------+
| Id | Name  | Salary | ManagerId |
+----+-------+--------+-----------+
| 1  | Joe   | 70000  | 3         |
| 2  | Henry | 80000  | 4         |
| 3  | Sam   | 60000  | NULL      |
| 4  | Max   | 90000  | NULL      |
+----+-------+--------+-----------+

Given the Employee table, write a SQL query that finds out employees who earn more than their managers. For the above table, Joe is the only employee who earns more than his manager.

+----------+
| Employee |
+----------+
| Joe      |
+----------+

题意:

给定上述的一个数据表,要求写一个SQL的查询语句,找出那些赚得比他们的经理工资要多的员工的姓名。

题解:

此题考虑用连接来做。可以将一张表格考虑成两张表格来做,然后用内连接的不等值连接来取得相应的结果;这里有一个需要注意的地方:在输出的时候,需要将姓名的列名改为Employee。

select e.Name as Employee from Employee as e join Employee as x on e.ManagerId = x.Id and e.Salary >= x.Salary;

还有一种是用自连接来做:

select e.name as 'Employee'
        from Employee e,Employee m 
            where e.managerid=m.id 
                and
                   e.salary>m.salary;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值