美文网首页
176. 第二高的薪水

176. 第二高的薪水

作者: 天不错啊 | 来源:发表于2020-02-20 17:43 被阅读0次

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

+----+--------+
| Id | Salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+

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

+---------------------+
| SecondHighestSalary |
+---------------------+
| 200                 |
+---------------------+

这道题目很有意思,取得不是max,而是第二个max。

  • 第一次提交
select Salary as SecondHighestSalary from Employee 
group by Salary desc
order by Salary desc
limit  1,1

看起来没有问题,但是如果limit 不存在,那么会返回一个空结构而不是null。

  • 第二次提交
select ifnull(null,Salary ) as SecondHighestSalary from Employee 
group by Salary desc
order by Salary desc
limit  1,1
  • 第三次提交
select ifnull(Salary,null ) as SecondHighestSalary from Employee 
group by Salary desc
order by Salary desc
limit  1,1
  • 第四次提交
    二、三次提交陷入了一个误区,直到select 1,Salary。我发现根本就没有输出,知道看了评论有一个大佬的代码。
select ifnull (
    (select distinct Salary
    from Employee
    order by Salary desc
    limit 1,1),
    null
)as 'SecondHighestSalary'

ifnull(x,y),若x不为空则返回x,否则返回y
limit x,y 从第x条取y条
distinct,过滤关键字

比我写的好多了,真不愧是大佬。

结论

select limit 没有就为空
临时表用法。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/second-highest-salary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

相关文章

网友评论

      本文标题:176. 第二高的薪水

      本文链接:https://www.haomeiwen.com/subject/noaxqhtx.html