题目描述
Employee表:+-------------+------+ | Column Name | Type | +-------------+------+ | id | int | | salary | int | +-------------+------+ id 是这个表的主键。 表的每一行包含员工的工资信息。查询并返回
Employee表中第二高的 不同 薪水 。如果不存在第二高的薪水,查询应该返回null(Pandas 则返回 None)。查询结果如下例所示。
示例 1:
输入: Employee 表: +----+--------+ | id | salary | +----+--------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | +----+--------+ 输出: +---------------------+ | SecondHighestSalary | +---------------------+ | 200 | +---------------------+示例 2:
输入: Employee 表: +----+--------+ | id | salary | +----+--------+ | 1 | 100 | +----+--------+ 输出: +---------------------+ | SecondHighestSalary | +---------------------+ | null | +---------------------+
题解
# Write your MySQL query statement below
select(select DISTINCT salary from Employee order by salary LIMIT 1 OFFSET 1)SecondHighestSalary;
上面是正确的解法,我们看下面两种解法
# Write your MySQL query statement below
select(select salary from Employee order by salary LIMIT 1 OFFSET 1)SecondHighestSalary;
这种解法会有一个问题就是,如果所有的薪水都一样,那么应该返回Null,而不应该是第二行的薪水,所以需要去重
select salary from Employee order by salary LIMIT 1 OFFSET 1
这种解法无法解决没有第二大返回Null的问题,只能在外面套一层查询
