题目:

id 是这个表的主键。
表的每一行包含员工的工资信息。

编写一个 SQL 查询,获取并返回 Employee 表中第二高的薪水 。如果不存在第二高的薪水,查询应该返回 null 。

查询结果如下例所示。

示例 1:

示例 2:

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/second-highest-salary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

方法一:

先将薪水降序排序,然后再使用limit限制输出条数。但由于有可能只有一条原始数据,无法输出第二高的数据。因此将查询的结果作为临时表来输出null。因为select null 返回的是null值。使用 distinct 去掉重复的薪水值。

1 select (
2 select distinct salary
3 from Employee
4 order by salary desc
5 limit 1 offset 1
6 )as SecondHighestSalary;

注意:select后面不接from的原理?

这是mysql中的用法,把值输出的意思。select 后面加常量的时候可以不加from 和表名。

方法二:

将不同的薪资降序排序,然后使用limit获得第二高的薪资,如果表中的原始数据只有一条,则查询就会出现空的情况,需要使用IFNULL进行判断。

1  select IFNULL(
2 (select distinct salary
3 from Employee
4 order by salary desc
5 limit 1,1), null )
6 as SecondHighestSalary

知识点:

1.limit的用法

①limit m,n:跳过第m条数据,输出n条数据。(limit 2,3跳过第2条数据,输出3条数据)

②limit m offset n:跳过第n条数据,输出m条数据。

2.IFNULL和NULLIF用法

①IFNULL(expression,value):如果第一个参数(expression)为空,则返回第二个参数的值,如果不为空返回第一个参数的值;

②NULLIF(expre1,expre2):如果第一个参数等于第二个参数,则 nullif 函数返回 null,否则返回第一个参数。

面试题:

小米:分别找出每个课程内的第二高的成绩,这种情况下应该怎么分组求出?

使用窗口函数:row_number() over(partition by 课程 order by 成绩)

①row_number() over语句用于为查询结果的每一行生成一个唯一的数字行号;

②partition by语句用于将查询结果按照指定的列进行分组,生成的行号只在每组内部有效;

③order by语句用于指定在每组内部对行号进行排序的列。

力扣176(MySQL)-第二高的薪水(中等)的更多相关文章

  1. LeetCode 176. 第二高的薪水(MySQL版)

    0.前言 最近刷LeetCode 刷数据库题目 由于数据库课上的是SQL,而MySQL有许多自己的函数的,怕把刚学会的函数忘记 特在此记录! 1.题目 编写一个 SQL 查询,获取 Employee ...

  2. MYSQL查询第二高的薪水

    编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+| Id | Salary |+----+--------+| 1 | 100 || ...

  3. LeetCode:176.第二高的薪水

    题目链接:https://leetcode-cn.com/problems/second-highest-salary/ 题目 编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Sal ...

  4. SQL Server实现 LeetCode 176 第二高的薪水

    176. 第二高的薪水 SQL架构 编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+- ...

  5. Mysql的两种“排名第几且有可能为空的记录”写法(力扣176)

    编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 ...

  6. mysql 第二高薪水

    编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 | ...

  7. Mysql训练:第二高的薪水(IFNULL,OFFSET,LIMIT)

    编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 ...

  8. [SQL]LeetCode176. 第二高的薪水 | Second Highest Salary

    Write a SQL query to get the second highest salary from the Employee table. +----+--------+ | Id | S ...

  9. MySql_176. 第二高的薪水 + limit + distinct + null

    MySql_176. 第二高的薪水 LeetCode_MySql_176 题目描述 题解分析 代码实现 # Write your MySQL query statement below select( ...

  10. LeetCode176——第二高的薪水

    题目描述 编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+--------+ | 1 ...

随机推荐

  1. react start 后 url 后面不带/ 解决思路

    > navigator@0.1.0 dev H:\2020home\giteez\navigator > node scripts/start.js Compiled successful ...

  2. 深入浅出Java多线程(十二):线程池

    引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第十二篇内容:线程池.大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在现代软件开发中,多线程编程已经成为应对 ...

  3. linux控制显示器的亮度

    我使用的manjaro yay -S redshift -b 白天:晚上 要应用的屏幕亮度(在 0.1 和 1.0 之间) -c 文件 从指定的配置文件加载设置 -g R:G:B 要应用的其他伽马校正 ...

  4. STM32 SPI DMA 源码解析及总结

    一 前言 最近在调试stm32的SPI时候i,遇到了一个非常诡异的问题.中间花费了不少时间才把问题搞定.这中间暴露的问题值得反思.借此机会,还是梳理一下stm32的SPI的代码做一个总结吧. 二 初始 ...

  5. Spring Boot 2.0 新人会踩的坑--启动报404错误

    转载自:http://www.javaman.cn/channels/sb2 启动程序,验证效果 根据图示,点击按钮,来启动 Spring Boot Web 程序, 查看控制台输出: . ____ _ ...

  6. python学习笔记(4):面向对象

    面向对象 定义 class Student(被继承类): def __init__(self, xx, xxx): #构造函数 类方法的第一个参数一定是self.除此之外和普通函数并没有区别.同样可以 ...

  7. Linux下编译成静态库和动态库,引入到项目中

    目录 配置全局变量 编译动态库和静态库: 动态库编译 静态库编译 AS mk 方式加载静态库和动态库 配置build.gradle 加载静态库方法 将libget.a考入到项目中 配置Android. ...

  8. Django:Nginx 启动,无法加载样式,无法加载静态文件

    一般是由于 Nginx 配置文件的问题 # 编辑 Nginx 配置文件 vim /etc/nginx/nginx.conf # 如果出现下面这个 use nginx 就需要改成 use root 保存 ...

  9. 【leetcode https://leetcode.cn/problems/count-integers-in-intervals/】 线段树

    leetccode count-integers-in-intervals 线段树解决: class CountIntervals { Seg root; public CountIntervals( ...

  10. 专访虚拟人科技:如何利用 3DCAT 实时云渲染打造元宇宙空间

    自古以来,人们对理想世界的探索从未停止,而最近元宇宙的热潮加速了这一步伐,带来了许多新的应用.作为元宇宙的关键入口,虚拟现实(VR)将成为连接虚拟和现实的桥梁.苹果发布的VISION PRO头戴设备将 ...