题目:

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. vite + vue3 打包后 本地直接运行 type="module" crossorigin 替换为defer - 多个vue文件就不好使了

    vite + vue3 打包后 本地直接运行 type="module" crossorigin 替换为defer 需求: 想打包后,双击运行,不启动服务 修改 vite.conf ...

  2. C++中fopen的句柄返回NULL

    我们在使用fopen打开文件的时候有时会出现失败返回null情况,但是我们不能直接通过log具体是什么原因导致的,所以这时我们可以通过errno和strerror获取错误码和错误信息. 我遇到的是错误 ...

  3. Libcurl & Log4cplus 移植和使用 以及 Jsoncpp 简单使用

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  4. Spring Boot学习日记10

    今天学习了多环境切换profile 精髓 1.SpringBoot启动会加载大量的自动配置类 2.我们看我们需要的功能有没有在SpringBoot默认写好的自动配置类当中: 3.我们再来看这个自动配置 ...

  5. 文旅新体验!3DCAT助力广州非遗“元宇宙”街区炫酷亮相

    2022年6月12日,2022年"文化和自然遗产日"广州非遗宣传展示主会场暨广州非遗街区(北京路)开街仪式在南越王博物院(王宫展区)举行. 本次活动由广州市文化广电旅游局主办,广州 ...

  6. Python基于Excel生成矢量图层及属性表信息:ArcPy

      本文介绍基于Python中ArcPy模块,读取Excel表格数据并生成带有属性表的矢量要素图层,同时配置该图层的坐标系的方法. 1 任务需求   首先,我们来明确一下本文所需实现的需求.   现有 ...

  7. 在命令行中使用 cl.exe编译 C/C++ 程序并执行

    cl.exe是Microsoft C/C++编译器. 我的VC6.0安装目录为:D:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev9 ...

  8. SpringBoot项目 填充Excel模板 导出 下载

    模板 下载后的效果 项目结构 pom <?xml version="1.0" encoding="UTF-8"?> <project xmln ...

  9. WARN o.a.t.util.scan.StandardJarScanner - Failed to scan [file:/D:/Mavencangku/com/sun/xml/bind/jaxb-core/2.3.0/jaxb-api.jar] from classloader hierarchy

    1.SpringBoot项目启动突然报错 2024-03-27 14:57:41 [restartedMain] WARN o.a.t.util.scan.StandardJarScanner - F ...

  10. 记一次 .NET某防伪验证系统 崩溃分析

    一:背景 1. 讲故事 昨晚给训练营里面的一位朋友分析了一个程序崩溃的故障,因为看小伙子昨天在群里问了一天也没搞定,干脆自己亲自上阵吧,抓取的dump也是我极力推荐的用 procdump 注册 AED ...