每日Leetcode—SQL(1)

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

175.组合两个表

表1: Person 表2: Address

编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:
FirstName, LastName, City, State

方法:

按照题目要求,使用left join,将左表的所有行包含进去:

select p.FirstName, p.LastName, a.City, a.State
from Person p left join Address a
on p.PersonId =a.PersonId 

176.第二高的薪水

编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。


表 Employee

例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。

方法一:

该方法利用max函数对salary中最大的数进行过滤后,再次使用max函数选择最大的数。

select max(Salary) as SecondHighestSalary
from Employee
where Salary<(select max(Salary) from Employee)

方法二:

1、题目要求不存在就返回null,该方法使用ifnull函数;
2、利用dictinct对重复数据去重;
3、limit[offset,n]函数进行偏移选择。

select ifnull(
(select distinct Salary
from Employee 
order by Salary desc limit 1,1), null)
as SecondHighestSalary
上一篇 下一篇

猜你喜欢

热点阅读