每日Leetcode—SQL(3)

2019-04-17  本文已影响0人  Chuck_Wu

180.连续出现的数字

表Logs
结果表

方法一:

select Num ConsecutiveNums from Logs l1,
left join Logs l2 on l1.Id = l2.Id-1
left join Logs l3 on l1.Id = l3.Id-2
where l1.Num = l2.Num and l2.Num = l3.Num

分析:该方法首先使用left join将表连接起来,再使用where查找满足条件的行。

方法二:

select Num ConsecutiveNums
from Logs l1,Logs l2,Logs l3
where l1.Num = l2.Num and l2.Num = l3.Num and l1.Id = l2.Id-1 and l2.Id = l3.Id-1 

分析:该方法直接使用了where条件查找

181.超过经历收入的员工

表Employee

给定 Employee 表,编写一个 SQL 查询,该查询可以获取收入超过他们经理的员工的姓名。在上面的表格中,Joe 是唯一一个收入超过他的经理的员工。


结果表

方法一:

select Name Employee
from Employee 
where e1.Salary>(select e2.Salary from Employee e2 where e1.ManagerId = e2.Id)

分析:取满足e1.ManagerId = e2.Id的行的Salary,并与e1表进行比较。

方二:

select e1.Name Employee
from Employee e1 join Employee e2
on e1.ManagerId = e2.Id and e1.Salary>e2.Salary

分析:利用join取交集的方式对满足条件的行进行查找。

方法三:

select e1.Name Employee
from Employee e1, Employee e2
where e1.ManagerId = e2.Id and e1.Salary>e2.Salary

分析:直接利用where判断出满足条件的行。

上一篇下一篇

猜你喜欢

热点阅读