力扣(leetcode) 176. 第二高的薪水-----排序,去重,ifNull函数使用方法,limit函数使用方法。

题目在这:
https://leetcode-cn.com/problems/second-highest-salary/

sql表结构:

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

题目分析:

题目要求找到该表中第二大的数。显然要使用limit函数。

我们先对该数据进行降序排序,去重,然后找到第二大的值就可以了。
即:select distinct Salary from Employee order by Salary desc limit 1,1;

但题目中还要求,若没有第二大的值,则返回null.所以这里使用ifNull函数。

select ifNull((select distinct Salary from Employee order by Salary desc limit 1,1),null);

注意看题目中的实例,返回值的名字被重命名了。所以。最终答案再加上重命名:select ifNull((select distinct Salary from Employee order by Salary desc limit 1,1),null) as SecondHighestSalary;

知识点

要想获取第二高,需要排序,使用 order by(默认是升序 asc,即从小到大),若想降序则使用关键字 desc

去重,如果有多个相同的数据,使用关键字 distinct 去重

判断临界输出,如果不存在第二高的薪水,查询应返回 null,使用 ifNull(查询,null)方法

起别名,使用关键字 as …

因为去了重,又按顺序排序,使用 limit()方法,查询第二大的数据,即第二高的薪水,即 limit(1,1) (因为默认从0开始,所以第一个1是查询第二大的数,第二个1是表示往后显示多少条数据,这里只需要一条) 使用的时候是 limit 1,1 而不是limt (1,1)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

深度不学习!!

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值