首页 > 数据库 >MYSQL -- 第二高的薪水

MYSQL -- 第二高的薪水

时间:2023-03-16 15:12:42浏览次数:39  
标签:salary -- +---------------------+ +----+--------+ 薪水 MYSQL Employee id

  1. 第二高的薪水
    中等
    1.3K
    相关企业
    SQL Schema
    Employee 表:
    +-------------+------+
    | Column Name | Type |
    +-------------+------+
    | id | int |
    | salary | int |
    +-------------+------+
    id 是这个表的主键。
    表的每一行包含员工的工资信息。

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

查询结果如下例所示。

示例 1:

输入:
Employee 表:
+----+--------+
| id | salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
输出:
+---------------------+
| SecondHighestSalary |
+---------------------+
| 200 |
+---------------------+
示例 2:

输入:
Employee 表:
+----+--------+
| id | salary |
+----+--------+
| 1 | 100 |
+----+--------+
输出:
+---------------------+
| SecondHighestSalary |
+---------------------+
| null |
+---------------------+

解析:
别问为什么这么简单的题还要写博客,因为我菜/(ㄒoㄒ)/~~
这题有两个思路

  1. 根据薪水降序排列,然后取第二个
    直接丢代码
SELECT(
    IFNULL(
       (
        SELECT DISTINCT salary 
        FROM Employee
        ORDER BY salary desc
        LIMIT 1,1
       ),NULL
    )
) as SecondHighestSalary
  1. 找到薪水最大的,然后再筛选除了他之外,最大的
    po代码
SELECT(
    IFNULL(
       (
        SELECT DISTINCT MAX(salary)
        FROM Employee
        WHERE salary<(
            SELECT MAX(salary)
            FROM Employee
        )
       ),NULL
    )
) as SecondHighestSalary
  1. 一点点小细节,有可能出现相同的薪水数,故要使用DISTINCT去重;若没有第二大薪水数,则要返回NULL,so使用IFNULL函数

标签:salary,--,+---------------------+,+----+--------+,薪水,MYSQL,Employee,id
From: https://www.cnblogs.com/haipali/p/17222627.html

相关文章

  • 3.Mysql8.0安装初始配置
    1.YUM安装Mysql8.02.二进制安装Mysql8.03.登录mysql,重置密码====================================================================1.YUM安装Mysql8.01.1删除系......
  • 笔记本水冷改造记录
    1、前言最近用的电脑风扇总是起飞,打开idea都会像喷气飞机一样,使用时还经常卡顿。查看了一下闲鱼,当年8000多买的笔记本,3年半二手只能出大概3500。笔记本跟了一段时间了,还......
  • ruoyi-vue启动报错error:03000086:digital envelope routines::initialization error
    原因分析可能是因为node是最新版本导致ERR_OSSL_EVP_UNSUPPORTED错误SSL数字信封不支持解决措施(ps:网上找的)setNODE_OPTIONS=--openssl-legacy-provider亲测并......
  • requests高级用法、代理池搭建、爬取某视频网站、爬取新闻
    目录1requests高级用法1.0解析json1.1ssl认证(了解)1.2使用代理(重要)1.3超时设置1.4异常处理1.5上传文件2代理池搭建2.1django后端获取客户端的ip3爬取某视频网站......
  • Linux系统的atop监控工具
    背景信息:atop就是一款用于监控Linux系统资源与进程的工具,它以一定的频率记录系统的运行状态,所采集的数据包含系统CPU、内存、磁盘、网络的资源使用情况和进程运行情况,并能......
  • P35-P37指针6,7,8
    步骤一:char*p1="if";char*p2="for";char*p3="while";......
  • JavaScript 文件夹上传下载解决方案
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传......
  • less和sass优缺点对比
    1.编译难度sass: node-sass安装经常报错,而且与nodejs版本绑定,不再更新,dart-sass为纯js实现,性能待提升less:  编译容易,安装无压力2.语法2.1 循环sass有多种循环......
  • tkinter中treeview隔行显示不同的颜色
    隔行显示不同颜色的代码,这个牵涉到背景颜色,在3.8版的tkinter,要加多一些代码,才能让背景颜色起作用。这段要多加的代码就是:deffixed_map(option):return[elmforel......
  • 概述
       ......