当前位置: 首页 > news >正文

SQL 177. 第N高的薪水

SQL 177. 第N高的薪水

  • 数据
  • 需求
  • 解决
    • 方法1
    • 方法2

题目 : https://leetcode.cn/problems/nth-highest-salary/

数据

Create table If Not Exists Employee (Id int comment '主键列', Salary int comment '工资'
);Truncate table Employee;insert into Employee (id, salary) values ('1', '100');
insert into Employee (id, salary) values ('2', '200');
insert into Employee (id, salary) values ('3', '300');

需求

查询 Employee 表中第 n 高的工资

  • 当没有第 n 个最高工资,就返回为 null

查询结果 :

输出: 
| getNthHighestSalary(2) |
| 200                    |输出: 
| getNthHighestSalary(2) |
| null                   |

解决

技术点 :

  • row_number() : 同值不同名,类似行号,如 : 3000、2000、2000、1000 , 排名 : 1、2、3、4
  • rank() : 同值同名,有跳级,如 : 3000、2000、2000、1000 , 排名 : 1、2、2、4
  • dense_rank() : 同值同名,无跳级,如 : 3000、2000、2000、1000 , 排名 : 1、2、2、3
  • group by 能实现去重功能 , 如 : 1 , 2 , 1 。 分组 : 1, 2
  • ifnull(值, 为 null 返回) : 当第 1 个参数为 null , 就返回第 2 个参数值

方法1

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGINRETURN (# 写SQL-- 对薪水进行排序with t1 as (selectSalary,dense_rank() over(order by Salary desc) as Salary_rkfrom Employee),-- 筛选第 N 的薪水 ,并去重t2 as (selectSalaryfrom t1where Salary_rk = Ngroup by Salary)-- 判断是否为空select ifnull((selectSalaryfrom t2), null));
END

方法2

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN-- limit 要少 1set N = N - 1;RETURN (# 写SQL-- 对薪水去重-- 对薪水排序-- 选择 N + 1 名的薪水with t1 as (select Salaryfrom Employeegroup by Salaryorder by Salary desclimit N, 1)-- 判断 nullselect ifnull((select Salary from t1),null));
END
http://www.lryc.cn/news/58747.html

相关文章:

  • 14天手撸交互式问答数字人直播教程-课程计划
  • spring boot3.0新特性Http客户端远程调用
  • 查询联系:多表查询 - 1
  • 「Bug」OpenCV读取图像为 None 分析
  • EVO——视觉里程计/SLAM轨迹评估工具
  • TCP为什么要三次握手,而不是两次或四次?
  • git 命令:工作日常使用
  • Http和Https
  • 【计算机网络复习】第三章 传输层 2
  • 你真的会自动化测试?自动化测试技术选型抉择
  • 【id:31】【20分】A. Point(类与构造)
  • ASM字节码处理工具原理及实践(二)
  • Golang每日一练(leetDay0030)
  • QT5.15.2 在线安装下载速度慢的解决办法
  • Cadence Allegro 导出Waived Design Rules Check Report报告详解
  • Java阶段一Day19
  • radmin远程控制软件怎么样,有没有替代品
  • Java反射面试总结(一)
  • 【论文阅读】3D-LaneNet
  • Kafka的概念|架构|搭建|查看命令
  • 大数据项目实战之数据仓库:电商数据仓库系统——第5章 数据仓库设计
  • OpenHarmony社区运营报告(2023年3月)
  • 杰林码图像增强算法——超分辨率、图像放大、轮廓和色彩强化算法(二)
  • 在three.js中废置对象
  • Java中的String类真的不可变吗?
  • 电脑重装了系统开不了机怎么办?
  • SPOJ-NSUBSTR - Substrings(SAM求所有长度子串的最大出现次数)
  • Mariadb10.5基于同服务器多实例主从配置
  • linux 修改主机名称
  • 学校的地下网站(学校的地下网站1080P高清)