Leetcode数据库题解-176. Second Highest Salary

本文介绍两种SQL方法来找出表中某列第二大的数值。第一种利用LIMIT和OFFSET关键字,通过设置适当的参数实现对数据的筛选。第二种方法则借助MAX函数,巧妙地找出不包含最大值的次大值,满足题目需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目地址https://leetcode.com/problems/second-highest-salary/

题解:这道题让我们找表中某列第二大的数,这道题有很多种解法。

第一种:先来看一种使用Limit和Offset两个关键字的解法,MySQL中Limit后面的数字限制了我们返回数据的个数,Offset是偏移量,那么如果我们想找第二高薪水,我们首先可以先对薪水进行降序排列,然后我们将Offset设为1,那么就是从第二个开始,也就是第二高薪水,然后我们将Limit设为1,就是只取出第二高薪水,如果将Limit设为2,那么就将第二高和第三高薪水都取出来:

SELECT Salary FROM Employee GROUP BY Salary
UNION ALL (SELECT NULL AS Salary)
ORDER BY Salary DESC LIMIT 1 OFFSET 1;

第二种:借助max()函数,逻辑是我们取出的不包含最大值的数字中的最大值,即为第二大值,max()函数当无结果是返回null,符合题目要求。

select max(Salary) as SecondHighestSalary
from Employee
where Salary < (select max(Salary) from Employee);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值