使用Mysql实现Postgresql中窗口函数row_number的功能

1. 描述

需要根据用户id,查询每个人得分第二高的科目信息

2. 表结构及数据

2.1 表结构

CREATE TABLE `t_score` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`user_id` bigint(20) NOT NULL,`score` double NOT NULL,`subject` varchar(100) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;

2.2 测试数据

INSERT INTO hz_base.t_score
(id, user_id, score, subject)
VALUES(5, 1, 110.0, '数学');
INSERT INTO hz_base.t_score
(id, user_id, score, subject)
VALUES(6, 1, 116.5, '语文');
INSERT INTO hz_base.t_score
(id, user_id, score, subject)
VALUES(7, 1, 72.0, '英语');
INSERT INTO hz_base.t_score
(id, user_id, score, subject)
VALUES(8, 2, 116.5, '语文');
INSERT INTO hz_base.t_score
(id, user_id, score, subject)
VALUES(9, 2, 92.0, '英语');
INSERT INTO hz_base.t_score
(id, user_id, score, subject)
VALUES(10, 2, 88.0, '数学');

3. 使用

3.1 类似问题postgresql使用窗口函数ROW_NUMBER实现示例

select * from (
select id, user_id, score, subject,ROW_NUMBER() over (PARTITION by user_id order by score desc) rn from t_score 
) a
where rn = 2

3.2 mysql实现

由于mysql中8.0以下版本缺少对应的窗口函数,如果需要实现该逻辑,可以使用以下sql实现

-- 使用子查询,根据用户id分析,取第二个
select id, user_id, score, subject from t_score s1
where s1.id = (select id from t_scorewhere user_id = s1.user_id order by score desclimit 1 offset 1
);

4. 运行结果

4.1 全部数据

4.2 筛选出的数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/442167.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

51-21 Bird‘s-Eye-View,BEV 开山之作 LSS 论文精读

这以后阅读的论文逐渐靠近自动驾驶实用领域,本文要讲的是Birds-Eye-View,BEV开山之作,来自Nvidia的LSS论文。 LSS核心动机:2D-->3D,构建BEV空间。LSS核心结构首先是利用Lift模块进行深度分布学习,将二维…

哨兵1号回波数据(L0级)提取与SAR成像(全网首发)

本专栏目录:全球SAR卫星大盘点与回波数据处理专栏目录 本文先展示提取出的回波结果,然后使用RD算法进行成像,展示成像结果,最后附上哨兵1号回波提取的MATLAB代码。 1. 回波提取 回波提取得到二维复矩阵数据,对其求模值后绘图如下(横轴为距离向采样点,纵轴为方位向采样…

【HTML5·本地存储】

本地存储 本地存储是指在客户端存储数据,HTML5 为我们提供了两种 API,分别是 localStorage 与 sessionStorage,二者作为 HTML5 新增的特性,它们的使用方法类似,都可以用来存储客户端临时信息,并且二者存储…

【AI视野·今日Robot 机器人论文速览 第七十七期】Mon, 15 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Mon, 15 Jan 2024 Totally 14 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Learning Joint Space Reference Manifold for Reliable Physical Assistance Authors Amirreza Razmjoo, Tilen Brecelj, Kri…

Oladance、南卡、Cleer开放式耳机哪个好?2024年度三大热销品牌测评PK

​作为一位经验丰富的音频设备测评专家,我对各种创新型耳机都有深入了解。近年来,市场上涌现出许多不同品牌的开放式耳机,使得消费者在选择时面临一定的困扰。有些品牌为了降低成本,采用劣质材料和低品质的音频技术,导…

Java基础 LinkedHashMap

LinkedHashMap LinkedHashMap定义LinkedHashMap的原理图LinkedHashMap和HashMap的Entry结构图 LinkedHashMap在JDK中的定义LinkedHashMap继承关系:LinkedHashMap成员变量LinkedHashMap构造方法(5种)LinkedHashMap的init()方法LinkedHashMap基…

过年饺子馅儿的做法和配料,记在备忘录随时查看

每逢过年,家家户户的餐桌上总少不了一盘热气腾腾的饺子。对于我们中国人来说,饺子不仅仅是一种美食,更承载了团圆的情感和美好的寓意。尤其是在这个阖家欢乐的时刻,能够亲手为家人包上一顿美味的饺子,无疑是一件既有意…

Swift Vapor 教程(项目创建)

The future of web development. 在初次接触 Swift Vapor 时,感觉代码比较清爽,用起来逻辑比较清晰。 困难点: Swift Vapor 使用了JWT管理三方库,比较吃网络Swift Vapor 搭建环境比较复杂初次使用Swift Vapor 尽量不要使用MySql。…

研学活动报名平台源码开发方案

一、项目背景与目标 (一)项目背景 研学活动报名平台旨在为活动组织者提供方便快捷的研学活动管理工具,同时为用户提供全面的活动搜索、报名和支付等功能。通过该系统,活动组织者能够更好地管理活动报名信息,用户也可…

ASP.NET Core 使用 SignalR 的简单示例

写在前面 ASP.NET SignalR 是一个开源代码库,简化了Web实时通讯方案,可以实时地通过服务端将信息同步推送到各个客户端,可应用于 需要从服务器进行高频更新的应用:包括游戏、社交网络、投票、拍卖、地图和GPS应用; 仪…

管理的四种风格

前言 管理的四种风格,一般的领导大概就是这几种管理模式,告知,辅导,参与,授权,还有就是乱搞式(神经病模式)。 一、告知式 告知式是指组织通过正式、明确的渠道,将信息传达给员工。这种方式通常用于传递基本的规章制度、工作流程、政策文件等。告知式的作用在于确保员…

以“美”为鉴,探寻香港比特币现货ETF的未来发展

出品|欧科云链研究院 作者|Hedy Bi 根据The Block于1月29日的报道,嘉实国际成为了首家向香港证监会提交比特币现货ETF申请的机构。早在去年12月22日,香港证监会发布了《有关证监会认可基金投资虚拟资产的通函》,明确…