LeetCode刷题之旅【数据库篇】简单 - 4:第N高的薪水

【LeetCode 题解】数据库:177.第N高的薪水 通过本题学习,你将掌握:SQL 中处理排名问题的两种经典方法DISTINCT与窗口函数的使用场景如何编写健壮的 SQL 函数。 阅读详情

2019年11月15日

目录

题目 第N高的薪水

解题1

解题2


题目 第N高的薪水

 

解题1

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
    SET N = N-1;
  RETURN (
      # Write your MySQL query statement below.
    SELECT (SELECT DISTINCT
            Salary
        FROM
            Employee
        ORDER BY Salary DESC
        LIMIT 1 OFFSET N
    ) as SecondHighestSalary
  );
END

 

解题2

查询思路类似求第二高的薪水,需注意考虑N不合理的情况。测试第一轮就遇到N为0的情况,所以加上了处理逻辑。详细如下:

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
    DECLARE P1 INT; -- 第P1高的薪水
    DECLARE P2 INT; -- 取P1-1后的P2个值
    -- 当N<1时,P1会为负数,采用IF调整为0,另此时结果不存在,设置P2为0
    IF (N<1)
      THEN SET P1 = 0, P2 = 0;
    ELSE SET P1 = N-1, P2 = 1;
    END IF;
    
    RETURN (
        -- 若不存在第N高的薪水,取NULL
        SELECT IFNULL(
            (
                -- 去除重复值,倒序取第P1大的值后P2个值
               SELECT DISTINCT Salary
                FROM Employee
                ORDER BY Salary DESC
                LIMIT P1, P2
            ), NULL
        ) AS SecondHighestSalary   
    );
END

作者:rotcod-wang
链接:https://leetcode-cn.com/problems/nth-highest-salary/solution/jing-que-da-an-han-zhu-shi-kao-lu-nbu-he-li-qing-k/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

【中等】力扣算法题解析LeetCode177:第N高的薪水 该题目要求查询Employee表中第n高的不同工资,若不足n个则返回null。解题关键在于去重、降序排序和分页查询:使用DISTINCT去重,ORDER BY salary DESC排序,LIMIT 1 OFFSET N-1获取第n高记录。MySQL函数实现中,先计算偏移量N-1,再执行查询。若无结果自动返回NULL。性能优化建议在salary列建索引。边界情况已处理,如n=2时表只有一条记录返回null。代码简洁高效,时间复杂度取决于排序算法(通常O(n log n))。 阅读详情

相关推荐

VisionMaster 4.2.0安装

按照顺序安装。

XuXing_java的专栏 3790

LeetCode:Nth Highest Salary - 第N高的工资

1、题目名称 Nth Highest Salary(第N高的工资) 2、题目地址 https://leetcode.com/problems/nth-highest-salary/ 3、题目内容 与这道题目相比,上一道题目“Second Highest Salary”是本题在N=2时...

182

LC-3 机器语言 指令集

生活本就沉闷,但跑起来就有风

笔记 1万+

[LeetCode] Nth Highest Salary 第N高薪水

  Write a SQL query to get the nth highest salary from the Employee table. +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | +----+--------+ Fo...

weixin_34176694的博客 527

Claude Code教程(二) | Claude Code 核心信息与使用指南

Claude Code 核心信息与使用指南

qq_20236937的博客 2185

FFmpeg HDR视频转SDR视频命令

之前蓝光盘电影多是AVC 1080p 8bit SDR格式视频,近两年4K电影流行,下载的蓝光电影多是HEVC 2160p 10bit HDR视频格式。 ffprobe查看有如下属性: # 10bit HDR Stream #0:0(eng): Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 23.98

彼此当年少,莫负好时光 1万+

LeetCode第177题_第N高的薪水

编写一个 SQL 查询,获取Employee表中第 n 高的薪水(Salary)。例如,给定上表,如果 n = 2,则应该返回第二高的薪水。如果没有第 n 高的薪水,那么查询应返回null。

qq_40263592的博客 1299

Python实战:5分钟搞定VCF文件中每个样本的SNP统计(附bcftools安装指南)

本文介绍了三种高效统计VCF文件中每个样本SNP数量的Python方法,包括原生解析、结合bcftools的推荐方案以及使用PyVCF3专业库。特别推荐bcftools结合Python的方法,适用于中大型VCF文件,显著提升处理效率。文章还提供了bcftools安装指南和进阶统计技巧,帮助生物信息学分析人员快速完成SNP统计任务。

weixin_30555125的博客 494

深入解析力扣177题:第N高的薪水(SQL子查询与LIMIT详解及模拟面试问答)

在本篇文章中,我们将详细解读力扣第177题“第N高的薪水”。通过学习本篇文章,读者将掌握如何使用SQL语句来解决这一问题,并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释,以便于理解。

10年数据\经营分析经验,现任大厂数据分析负责人 999

硬件电路(22)-TTL和232切换电路

工作中会遇到TTL和232电平的通信的状态,为了实现一种便捷的切换方式,参考了一些文章,提供一种电路方便大家使用。

剑藏锋的博客 1864

生成模型实战 | 基于Transformer生成音乐

本文介绍了基于Transformer架构的音乐生成方法,将音乐视为一系列事件序列进行处理。与将音乐表示为多维图像的MuseGAN不同,该方法使用类似GPT的仅解码器模型,基于先前事件预测下一个音乐事件。模型使用MIDI格式的钢琴音乐数据,通过分词处理将音符转换为note-on、note-off、time-shift和velocity四种事件类型,共388个独特词元,映射为索引序列后输入网络。训练完成后,可通过调整温度参数控制生成音乐的新颖性,从而创作出风格类似训练数据且连贯逼真的音乐作品。

盼小辉丶的博客 5845

SQL Server实现 LeetCode 177 第N高的薪水

177. 第N高的薪水 编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。 +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | +----+--------+ 例如上述 Employee 表,n = 2 时,应返回第二高的...

南 墙 1万+

【信息系统项目管理师】第18章:项目绩效域详解

(3)度量绩效域与规划绩效域、项目工作绩效域和交付绩效域的相互作用:1规划构成了 交付和规划比较的基础;项目绩效域共同构成了一个统一的整体,作为一个完整系统,在项目生命周期过程中运行,系统内的每个绩效域相互作用、相互关联和相互依赖,并协调一致、共同运作,支撑项目目标和价值 的实现。(5)开发方法和生命周期绩效域与其他绩效域的相互作用:开发方法和生命周期绩效域与干系人绩效域、规划绩效域、不确定性绩效域、交付绩效域、项目工作绩效域和团队绩效域相互作用。(2)项目工作绩效域的绩效要点包括:项目过程;

数据知道的博客 7804

【SQL】结果不存在返回null的问题--以LeetCode数据库176、177第N高的薪水为例

当结果不存在时,返回null。

weixin_70610233的博客 2172

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

leetcode之sql刷题笔记

引言 感觉自己的sql水平很菜,可能是很久没用忘了,也可能是我当初就没学好,所以现在准备补习一波sql查询,在上一篇中,我列举了mysql基本的查询操作。另外买了本《高性能mysql》影印版还没到,《sql必知必会》今天看电子版有点想睡觉。。嗯,感觉效率不高,那么就开始刷题吧。 1. 组合两个表 题目来源:https://leetcode-cn.com/problems/combine-two-...

submarineas的博客 1305

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

19.第二高的薪水和第N高的薪水-LeetCode

Employee表:id 是这个表的主键。表的每一行包含员工的工资信息。查询并返回Employee表中第二高的薪水。如果不存在第二高的薪水,查询应该返回。查询结果如下例所示。Employee 表:Employee 表:(1)解题思路。

2501_91344547的博客 577

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

第二高的薪水 & 第N高的薪水

问题一: 编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。 Employee 表 Id Salary 1 100 2 200 3 300 例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。 查询结果: SecondHighestSalary 200 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/proble

Millionmile的博客 1561

Leetcode 刷题 177.第N高薪水

通过LIMIT 指定 (N-1)开始取1位 -> LIMIT (N-1), 1 来获取第N高的薪水。通过窗口函数排序后 直接WHERE 排序 来指定第N高的薪水。个最高工资,查询结果应该为。查询结果格式如下所示。

weixin_52006675的博客 531

LeetCode177. 第N高的薪水解题思路及引申的排序函数用法

leetcode第N高的薪水解题思路及引申的第N大等排序函数用法

MO_ROM的博客 1823

LeetCode刷题之第N高的薪水

LeetCode刷题之第N高的薪水第N高的薪水(Nth Highest Salary)题目SQL脚本官方解法其他查看MySQL版本delimiter关键字limit关键字语法MySQL查询结果中增加行号列自定义MySQL函数参考链接函数创建函数查找函数使用函数删除 第N高的薪水(Nth Highest Salary) 题目 SQL脚本 DELIMITER $$ DROP FUN...

CharlesYan的博客 594

21,SQL训练之,力扣,177. 第N高的薪水

sql训练。不同方法和详细思路和步骤 解 力扣,177. 第N高的薪水

qq_55006020的博客 567

SQL - 查询第N高的薪水SQL 实现详解(LeetCode177)

查询第n方法 1:使用LIMIT和OFFSET,适用于支持窗口函数的数据库,简单直观。方法 2:使用窗口函数,适用于支持窗口函数的数据库,效率高且灵活。方法 3:使用子查询和LIMIT,适用于不支持窗口函数的数据库,适合简单场景。选择哪种方法取决于你所使用的数据库和具体的应用场景。希望本文能够帮助你在 SQL 面试和开发中更加得心应手!

逍遥Sean的博客 1311

【力扣数据库】177-第N高的薪水

题目 编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。 +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | +----+--------+ 例如上述 Employee 表,n = 2 时,应返回第二高的薪水 200。如果...

ZeromaXHe的博客 643

【Pandas练习100题】第001题:第N高的薪水

函数/属性作用 (在代码中的应用)参数/用法总结对 DataFrame 的行进行排序。by: 指定排序的列名(如'salary'ascending: 布尔值,True(升序,默认) 或False(降序)。从 DataFrame 中移除重复的行。subset: 指定要检查重复项的列名或列名列表(如['salary']keep'first'(默认),'last', 或False(移除所有重复项)。基于整数位置的索引。用于通过行和列的整数位置访问数据,例如df.iloc[行索引, 列索引]。第N个元素。

经天纬地,格物致理 715

力扣177. 第N高的薪水

力扣177. 第N高的薪水 https://leetcode-cn.com/problems/nth-highest-salary/ 编写一个 SQL 查询,获取 Employee 表中第n高的薪水(Salary)。 +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 | | 2 | 200 | | 3 |...

小麦China的博客 263

【LeetCode数据库】第N高的薪水(177)

【LeetCode数据库】第N高的薪水(177)

weixin_37780776的博客 495
上一篇: LeetCode刷题之旅【数据库篇】简单 - 3:第二高的薪水
下一篇: LeetCode刷题之旅【多线程篇】简单 - 1:按序打印
后台技术汇
博客等级 码龄11年 670粉丝 531原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

后台技术汇

对你的帮助,是对我的最好鼓励。

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

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

打赏作者

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

抵扣说明:

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

余额充值