第二高的薪水 --- MySQL [Leetcode 题目详解]

Leetcode:MySQL查询第二高薪水

目录

题目链接

往期相关基础内容讲解博客

题目详解

1. 题目内容

2. 解题思路

3. 代码编写

3.1 使用简单子查询

3.2 使用 limit 和 offset 查询


题目链接

// 176. 第二高的薪水

往期相关基础内容讲解博客

// 表的查询

题目详解

1. 题目内容

// 查询并返回 Employee 表中第二高的 不同 薪水 。如果不存在第二高的薪水,查询应该返回 null(Pandas 则返回 None) 。

2. 解题思路

// 因为我们的查询只涉及到一个表, 并且查询不能一次就得出结果, 所以我们需要用到的查询方式就是子查询

// 题目中涉及了两个关键词 "第二" 和 "null", 所以我们需要注意的就是这两个点, 另外还需要确保这个 "第二" 和 "第一" 不能重复, 所以在查 "第一" 的时候还需要用到一个关键词 "distinct" (去重复)

// "null" 值的确定就需要 ifNull(a, b) 函数来判断, 这个函数表示如果不为空返回 a, 为空则返回 b

// 查询 "第二", 可以是先查到最大值, 然后通过比较得到第二大的值; 也可以使用 limit 和 offset 语句 (limit n offset m 分句表示查询结果跳过 m 条数据, 读取前 n 条数据) 进行降序后查询

3. 代码编写

3.1 使用简单子查询

select 
    ifNull(
            (select 
             max(distinct salary)
             from 
                Employee 
            where 
                salary < (select 
                            max(distinct salary) 
                        from 
                            Employee
                        )
            ),null
        )  
    as SecondHighestSalary;

3.2 使用 limit 和 offset 查询

select 
    ifNull(
        (select 
            distinct salary
        from 
            Employee 
        order by 
            Salary Desc
        limit 1,1),null) 
    as SecondHighestSalary;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿周LV

这么看的起小子, 你不暴富谁暴

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值