leetcode: Employees Earning More Than Their Managers

编程入门 行业动态 更新时间:2024-10-27 02:26:23

leetcode: <a href=https://www.elefans.com/category/jswz/34/1692606.html style=Employees Earning More Than Their Managers"/>

leetcode: Employees Earning More Than Their Managers

原题如下:

Employees Earning More Than Their Managers

 

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

本题有两种思路,一种是表的自身连接不使用join关键字,另一种是使用join关键字,第二种效率比较高。

第一种代码如下,

SELECT e1.Name from Employee e1,Employee e2where e1.ManagerId=e2.Id and e1.Salary>e2.Salary;
表名为Employee,e1和e2分别是为Employee起的别名。


第二种代码如下,

SELECT employer.NameFROM  Employee employer JOIN Employee manager ON (employer.ManagerId = manager.Id )WHERE employer.Salary > manager.Salary ;
其中employer和manager也是Employee的别名,与JOIN一起使用的ON表示join的字段。

Mysql还有一个关键字left join,表示不管第二个表中有没有数据都把第一个表中的数据打印出来,leetcode的另一个题目考察了一个用法

题目连接:/

解答:

select FirstName,LastName,City,Statefrom Person left join Address on Person.PersonId=Address.PersonId
因为不存在重复,所以在select可以不用使用表名作为前缀

更多推荐

leetcode: Employees Earning More Than Their Managers

本文发布于:2024-02-17 04:18:14,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1692602.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Employees   leetcode   Managers   Earning

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!