176. 第二高的薪水

2020-02-20  本文已影响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 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

上一篇 下一篇

猜你喜欢

热点阅读