力扣数据库题目176第二高的薪水

力扣数据库题目176第二高的薪水

题目

编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。

+—-+——–+
| Id | Salary |
+—-+——–+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+—-+——–+
例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。

+———————+
| SecondHighestSalary |
+———————+
| 200 |
+———————+

来源:力扣(LeetCode

方案一

SELECT salary SecondHighestSalary
FROM (
    SELECT DISTINCT salary FROM test.employee
    UNION ALL
    SELECT NULL
    UNION ALL
    SELECT NULL
) t ORDER BY salary DESC LIMIT 1,1

方案二

SELECT salary SecondHighestSalary
FROM (
    SELECT salary,DENSE_RANK() OVER(ORDER BY salary DESC) num
    FROM test.employee
    UNION ALL
    SELECT NULL,2
    UNION ALL
    SELECT NULL,2
) t
WHERE num = 2
LIMIT 1;

方案三

SELECT t.salary SecondHighestSalary
FROM (
    SELECT salary
    FROM test.employee
    WHERE salary < (
        SELECT MAX(salary)
        FROM test.employee
    )
    UNION ALL
    SELECT NULL
) t
ORDER BY t.salary DESC LIMIT 1

方案四

SELECT t.salary SecondHighestSalary
FROM (
    SELECT salary
    FROM test.employee
    WHERE salary < ANY(
        SELECT salary
        FROM test.employee
    )
    UNION ALL
    SELECT NULL
) t
ORDER BY t.salary DESC LIMIT 1

方案五

SELECT (SELECT salary
FROM (
    SELECT DISTINCT salary FROM test.employee
) t ORDER BY salary DESC LIMIT 1,1)SecondHighestSalary

方案六

SELECT (SELECT salary
FROM (
  SELECT salary,DENSE_RANK() OVER(ORDER BY salary DESC) num
  FROM test.employee
) t
WHERE num = 2
LIMIT 1) SecondHighestSalary

方案七

SELECT (SELECT t.salary
FROM (
    SELECT salary
    FROM test.employee
    WHERE salary < (
        SELECT MAX(salary)
        FROM test.employee
    )
) t
ORDER BY t.salary DESC LIMIT 1) SecondHighestSalary

方案八

SELECT (SELECT t.salary
FROM (
    SELECT salary
    FROM test.employee
    WHERE salary < ANY(
        SELECT salary
        FROM test.employee
    )
) t
ORDER BY t.salary DESC LIMIT 1) SecondHighestSalary

 力扣数据库题目176第二高的薪水

分析

题目要求的结果是一行一列,并保证两个条件

1、列别名SecondHighestSalary

2、行至少一行NULL,为了维持这个问题

前四个方案是制造出来一个NULL行,后四个方案是0行使用select ()子查询后造出NULL行

为了保证条件2,废了很多事。

方案一五使用distinct,二六使用的开窗,三七使用的子查询,四八使用的ANY

建表

CREATE TABLE employee (
  id int NOT NULL AUTO_INCREMENT,
  salary int NOT NULL DEFAULT '0',
  PRIMARY KEY (id)
) ENGINE=InnoDB  COLLATE=utf8mb4_0900_ai_ci;

数据初始化

INSERT INTO test.employee(id,salary)
VALUES(1,100),(2,200),(3,300)

Original: https://www.cnblogs.com/klarck/p/14085388.html
Author: 一剑破万法
Title: 力扣数据库题目176第二高的薪水

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/591680/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • flowable 查询、完成、作废、删除 任务

    /** * 查询我的任务 * from fhadmin.cn * @param USERNAME * @return 返回任务列表 */ protected List findMy…

    数据库 2023年6月6日
    0204
  • 学会使用MySQL的Explain执行计划,SQL性能调优从此不再困难

    上篇文章讲了MySQL架构体系,了解到MySQL Server端的优化器可以生成Explain执行计划,而执行计划可以帮助我们分析SQL语句性能瓶颈,优化SQL查询逻辑,今天就一块…

    数据库 2023年5月24日
    077
  • ES6 Map映射

    ES6 Map映射 Map对象保存的是 键值对。任何类型值(对象或原始值)都可以作为一个键或一个值。 基础用法 //创建 let map = new Map(); //增|改,返回…

    数据库 2023年6月11日
    088
  • 第18章 MySQL8其它新特性

    第18章 MySQL8其它新特性 1. MySQL8新特性概述 MySQL&#x4ECE;5.7&#x7248;&#x672C;&#x76F4;&a…

    数据库 2023年6月6日
    081
  • Ansible简介

    Ansible 是一种常用的自动运维化工具,基于 python 开发,分布式,无需客户端,轻量级,配置语言采用 YAML。 模块化:调用特定的模块,完成特殊的任务。 2.Param…

    数据库 2023年6月14日
    0113
  • SpringBoot下使用AOP做日志

    AOP实现接口执行时间的计算: SpringBoot项目导入spring-boot-starter-aop依赖 编写切面类 类上加@Aspect注解,表明这是一个切面类 类上加@C…

    数据库 2023年6月14日
    0119
  • sarama Kafka客户端生产者与消费者梳理

    生产者 sarama 库提供了同步生产者和异步生产者。 SyncProducer 是在 AsyncProducer 基础上加以条件限制实现的。 type SyncProducer …

    数据库 2023年6月16日
    066
  • 高并发组件了解

    消息队列 A服务和多个服务耦合,内部维护对多个服务发送数据的接口,那么这些接口如果有的挂了,有的不需要了,那么还得修改A内部的代码,如果使用MQ,A发送消息就好,不必考虑那么多事情…

    数据库 2023年6月16日
    061
  • 批量新建域用

    前几个章节我们讲到Windows Server 2016-图形化新建域用户(一),本章节我们简单讲解下如何通过命令批量创建域用户,以便高效完成日常工作中实际批量创建用户需求,内容涉…

    数据库 2023年6月14日
    074
  • Docker镜像操作

    Docker镜像操作 Docker 镜像是由文件系统叠加而成(是一种文件的存储形式)。最底端是一个文件引 导系统,即 bootfs,这很像典型的 Linux/Unix 的引导文件系…

    数据库 2023年6月14日
    0112
  • 聊斋-河间生

    人的善恶在转瞬之间就可以改变,发现错误时往往已经差之千里了,但是发现错误及时改正这不也是很美好的一件事情么?河间生就是讲了这么一件事情。 主角简介:河间某生,家里比较富裕,烧火用的…

    数据库 2023年6月6日
    0103
  • 分库分表真的适合你的系统吗?聊聊分库分表和NewSQL如何选择

    曾几何时,”并发高就分库,数据大就分表”已经成了处理 MySQL 数据增长问题的圣经。 面试官喜欢问,博主喜欢写,候选人也喜欢背,似乎已经形成了一个闭环。 …

    数据库 2023年6月16日
    093
  • Vue3新特性API

    一、vue3介绍 vue3.0是在2.0的基础上重大优化调整后的升级版本,其响应式原理已经在vue2框架基础中介绍过,此文章重点介绍Vue 3 中一些新功能API及其使用,文章内容…

    数据库 2023年6月14日
    087
  • Redis和Mysql保持数据一致性

    1、简述 在高并发的场景下,大量的请求直接访问Mysql很容易造成性能问题。所以,我们都会用Redis来做数据的缓存,削减对数据库的请求。但是,Mysql和Redis是两种不同的数…

    数据库 2023年6月16日
    081
  • 二手车价格预测 | 构建AI模型并部署Web应用 ⛵

    💡 作者:韩信子@ShowMeAI📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40📘 机器学习实战系列:https://www.s…

    数据库 2023年6月14日
    078
  • centos下安装myrocksdb

    承接上一篇,https://www.cnblogs.com/lunyu/p/10190364.html 。编译安装myrocks的整个过程,特别是第2步和第7步,让人冗长难耐。因此…

    数据库 2023年6月14日
    0108
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球