oracle/dm查询分组中最大的一条数据:ROW_NUMBER()
1.利用Navicat的历史日志查询表的索引信息(还可以查询很多系统级别的信息)2.SQL语法之:连表查询:union all3.☆常用的Sql语句汇总(DDL/DML)4.SqlServer使用总结5.DaMeng数据库(国产)6.Oracle和达梦:获取更新随机时间sql7.Oracle和达梦:连接多行查询结果8.表和数据连接,而不是和表连接(JOIN)9.Oracle和达梦:查询系统表、系统表字段10.Oracle和达梦:根据外键名字查询表名11.Oracle和达梦:获取表是否被锁定12.Oracle和达梦:循环执行SQL(如循环插入数据)13.达梦数据库——压缩14.Oracle、达梦:生成32位字符串(ID)15.Oracle、达梦:获取两个表中差异的数据:minus(减法)16.Oracle、达梦:同一数据库边查询边插入的两种方式17.Oracle、达梦:☆获取数据库对象、获取对象的DDL定义语句(达梦)18.Oracle、达梦:_ 英文下划线 让LIKE查询失效的解决方案:ESCAPE关键字19.Oracle、达梦:数据库大小写不敏感,但是又要区分大小写敏感(默认敏感)20.Oracle、达梦:拼接数组数据为一行
21.oracle/dm查询分组中最大的一条数据:ROW_NUMBER()
22.Oracle的insert的批量插入语句23.Oracle/DM:LEFT OUTER JOIN排除数据(代替:not in)24.Oracle/达梦8 导出导入exp/imp你可以使用 Oracle 数据库中的 ROW_NUMBER()
窗口函数来实现这个需求。该函数能够在每个分组内对行进行编号,然后我们可以选择每个分组中 number
最大的那一行。
以下是一个示例 SQL 查询,演示如何根据 id
分组,并获取 number
最大的对象:
SELECT id, number, name FROM ( SELECT id, number, name, ROW_NUMBER() OVER (PARTITION BY id ORDER BY number DESC) AS rn FROM your_table ) WHERE rn = 1;
在这个查询中:
- 内部查询 (
FROM your_table
) 使用ROW_NUMBER()
窗口函数对每个id
分组内的数据进行编号,并且按照number
降序排列。 ROW_NUMBER() OVER (PARTITION BY id ORDER BY number DESC)
这部分代码会在每个id
分组内,根据number
降序为每行分配一个唯一的行号。- 外部查询通过
WHERE rn = 1
筛选出每个分组中number
最大的那一行,因为在按number
降序排列后,行号为 1 的就是number
最大的那一行。
请将 your_table
替换为你的实际表名。
示例数据:
id | number | name |
---|---|---|
1 | 1 | 第1个人 |
1 | 2 | 第2个人 |
2 | 1 | 第3个人 |
2 | 2 | 第4个人 |
3 | 1 | 第5个人 |
3 | 2 | 第6个人 |
3 | 3 | 第7个人 |
查询结果:
id | number | name |
---|---|---|
1 | 2 | 第2个人 |
2 | 2 | 第4个人 |
3 | 3 | 第7个人 |
这段 SQL 查询能正确地返回每个 id
分组中 number
最大的那一行数据。
分类:
SQL语法、函数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了