使用窗口函数ROW_NUMBER()、RANK()或DENSE_RANK()配合PARTITION BY实现分组内排序,保留每行记录;如查各部门工资前3员工:SELECT * FROM (SELECT name,dept,salary,ROW_NUMBER() OVER(PARTITION BY dept ORDER BY salary DESC) AS rn FROM employees) t WHERE rn
SQL 实现分组内排序,主要靠窗口函数 ROW_NUMBER()、RANK() 或 DENSE_R
ANK() 配合 PARTITION BY 子句,而不是用 GROUP BY —— 因为 GROUP BY 会聚合数据,无法保留每行原始记录来排序。
用 PARTITION BY + 排序窗口函数
这是最常用、最直接的方式:按指定字段分组,在每组内部按另一字段排序,并为每行生成序号。
-
PARTITION BY 定义分组依据(类似 GROUP BY 的分组逻辑,但不压缩行)
-
ORDER BY 写在窗口函数中,决定组内排序规则
- 例如:查每个部门工资最高的前 3 名员工
SELECT * FROM (
SELECT name, dept, salary,
ROW_NUMBER() OVER (PARTITION BY dept ORDER BY salary DESC) AS rn
FROM employees
) t WHERE rn
ROW_NUMBER vs RANK vs DENSE_RANK 的区别
三者都支持分组内排序,但处理并列的方式不同:
-
ROW_NUMBER():严格按顺序编号,相同值也分配不同序号(1,2,3,4…)
-
RANK():并列时给相同序号,跳过后续位次(1,2,2,4…)
-
DENSE_RANK():并列时给相同序号,不跳位次(1,2,2,3…)
比如某部门三人薪资为 15000、12000、12000:
ROW_NUMBER → 1,2,3;RANK → 1,2,2;DENSE_RANK → 1,2,2
配合 WHERE 或子查询筛选分组内 Top-N
窗口函数不能直接在 WHERE 中使用(因为执行顺序晚于 WHERE),必须嵌套子查询或 CTE:
- 写法一:用子查询包裹,外层加 WHERE 过滤序号
- 写法二:用 CTE 更清晰(尤其多步计算时)
- 注意:ORDER BY 在窗口函数里只影响排序逻辑,不影响最终结果集顺序;如需整体有序,外层再加 ORDER BY
WITH ranked AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY category ORDER BY score DESC) AS seq
FROM products
)
SELECT name, category, score FROM ranked WHERE seq = 1;
旧版本 MySQL(
只能用自连接或相关子查询模拟,性能较差,且逻辑复杂:
- 自连接:对每行统计同组中比它大的记录数,+1 即为名次
- 示例(找每科最高分学生):对 scores 表,按 subject 分组,用 LEFT JOIN 找出“没有更高分”的记录
- 建议升级到 MySQL 8.0+ 或 PostgreSQL / SQL Server 等原生支持窗口函数的数据库
不复杂但容易忽略:分组内排序本质是“每行独立计算位置”,不是聚合,所以别用 GROUP BY 去尝试实现。
相关推荐:
seo教程什么是标签词 ,手办ai tag
seo需要干什么,seo需要具备什么知识 ,ai帅酷
秦皇岛微模块机房怎么样?
亚投行机房怎么样?
关键词seo价格表,关键词 seo 呈贡推广营销公司
中国设施机房工程怎么样?
什么是seo网页优化,seo网页优化三要素 seo哪个论坛最好
SEO手段:提升网站流量的制胜法宝,联通5g卡推广电话营销
SEO变现:如何通过SEO技术实现稳定收入,宁波网站就下拉通推广
轻松切换VPS IP出口的方法指南
SEO代做:让你的企业轻松登顶搜索引擎,快速提升曝光率,雄安新区网站推广优化
seo有什么意义,seo的概念是什么 ,AI在绘画和写作中的应用
SEO网络营销:如何通过精准优化提升品牌价值,清远seo优化方法
VPS数据库安装疑难解析手册,轻松解决安装难题!
什么是基本的seo,基本seo技术 荆州seo排名技术
SEO很多,如何在竞争激烈的市场中脱颖而出?,微博营销推广花钱软件
seo算是什么营销方式,seo是网络营销吗 ,朗诵宪法ai
SEO前的准备工作:如何让网站为搜索引擎优化做好充分准备,专业seo优化质量保障
seo网站是什么找行者SEO,seo分析网站 ,AI封面设计app
VPS125ABS灯亮原因解析与快速应对指南
北京兆维机房怎么样?
SEO北京:数字时代,企业成功的关键,高端网站建设seo优化
SEO导航:助力网站提升流量与排名的必备工具,安康高端营销推广价格
搬瓦工VPS搭建***全攻略,轻松实现网络自由连接,一文搞定!
揭秘,VPS解禁真相大解析!
关键词优化上海,关键词优化技术公司 宁波本地抖音seo
URL泄露:如何防止信息泄露带来的严重后果,晋城seo优化需求
煤压机房怎么样?
SEO考核:如何通过精准的SEO优化提升网站排名与流量,印花推广营销方案
seo推广可以学到什么,seo推广的好处 ,文字做成ai格式
沈通科技机房怎么样?
SEO是什么意思?揭秘SEO的真正含义与重要性,网站抬头如何更适合优化
SEO改进:让你的网站排名跃升的秘密武器,厦门新网站建设
为什么做seo的人很少,为了什么做seo ,严阵以待游戏ai盾牌
seo是什么职业n,seo是什么的职务 桐城网站优化排名软件
SEO桔子:提升网站排名的必备法宝,天津网站建设在哪
SEO里面的秘密:如何通过搜索引擎优化提升网站流量,小罐茶营销推广方案下载
腾讯云VPS官网登录攻略,轻松步入云服务平台
seo有什么作用,seo的意义和作用 ,ai写作优点
应对搬瓦工VPS封锁的实用策略与解决方案!
中原科技电脑机房怎么样?
SEO要点:提升网站排名的核心技巧与策略,北京招聘网站排名优化
seo转行是什么意思,seo转化是什么 十堰商品网站推广公司
谷歌云VPS设置教程,零基础轻松上手,详细指南助你一步步完成设置!
seo是什么狗狗视频软件,狗狗视频图 ,ai腾讯写作
seo是什么怎么操作,seo什么意思 ,联想小新有ai写作功能吗
seo外链用什么形式,seo外链用什么形式好 saas网站建设优劣
seo搜索优化什么意思,seo搜索引擎优化是什么 螺蛳粉的营销推广
seo是什么价值,seo是做什么的 ,闪闪ai梨花
机房电脑散热怎么样快点?