Leetcode — mysql 专题 — 176题:第二高的薪水
前言
1.最近想把之前在leetcode练习的mysql专题梳理一遍,该系列主要是个人的学习总结,以方便之后个人时不时可以来翻阅复习。
2.(若有侵权,请联系我,会立即删除文章)
一、问题描述
难度中等 176题:第二高的薪水
二、代码实现
1.代码思路
思路一:先获取最高的薪水,再筛选掉最高的,然后再获取剩下部分的最高薪水
思路二:给薪水排序,再筛选排名第二的薪水
最后对于null值的处理:用ifnull函数
2.法一
select ifnull((select max(Salary)
from Employee e
where salary <(select max(Salary) from Employee)),null) SecondHighestSalary
3.法二
窗口函数dense_rank()
select ifnull((select distinct salary
from(
select e.*,
dense_rank() over(order by salary DESC ) rk
from Employee e)e1
where rk=2),null) SecondHighestSalary
总结
ifnull(判断条件,如果判断条件为null则为某值)函数。
dense_rank() :并列排名后名次不累加