「SQL」力扣-175、181、182

「SQL」力扣-175、181、182

【力扣-175】

表:

「SQL」力扣-175、181、182

问题: 请查询 无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName,LastName,City,State

思路解析:

因为无论person是否有地址信息,都需要取出每个用户的地址,有则取出对应地址,没有则为空,所以此处需要对表进行左关联。关联条件为 PersonId。

解答:

select 
  a.FristName,
  a.LastName,
  b.City,
  b.State 
 from Person as a 
 left join Address as b 
 on a.PersonId=b.PersonId  

【力扣-181】

表Employee:

「SQL」力扣-175、181、182

问题: 查询收入比经理高的员工,以任意顺序返回结果表。

「SQL」力扣-175、181、182

思路解析:

employee表中字段解析:id-员工id、name-姓名,salary-薪资、managerId-经理ID。

一张表比较两个人的工资,自然想到需要将一张表变为两张表,以employee表为主表提供员工id和员工薪水,然后自关联employee表可以提供经理id和经理薪水。

解答:

select 
  a.name as Employee 
 from Employee a 
 left join Employee b 
 on a.managerId=b.id 
 where a.salary>b.salary

【力扣-182】

表Person:

「SQL」力扣-175、181、182

问题: 查找Person表中所有重复的电子邮箱。返回如下结果:

「SQL」力扣-175、181、182

思路解析:

表字段解析:Id-用户唯一标识、Email-用户邮箱。

统计重复电子邮箱,只需要按照邮箱分组,统计每个邮箱出现的次数,如果次数大于1,即为重复邮箱。

解答:

select 
  Email 
 from Person 
 group by Email 
 having count(Email)>1

好了,今天的分享就到这里,喜欢的话点个赞吧~

更多sql、excel、面试题、面经移步 公众号 :数据怎么玩