news 2026/10/3 22:58:49

面试官:ROW_NUMBER() 和 GROUP BY 到底差在哪?5 分钟彻底秒杀!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
面试官:ROW_NUMBER() 和 GROUP BY 到底差在哪?5 分钟彻底秒杀!


【SQL 必知必会】一文吃透 ROW_NUMBER() OVER(PARTITION BY …) 与 GROUP BY 的本质区别


关键词:窗口函数、ROW_NUMBER、PARTITION BY、GROUP BY、SQL 优化、MySQL8、PostgreSQL、面试题
1. 前言
面试里高频出现的一道题:
“ROW_NUMBER() OVER (PARTITION BY no ORDER BY cIt DESC) 到底是哪个数据库的语法?和 GROUP BY 有什么区别?”
90% 的同学只能答出“分组排序”,却说不清“为啥不用 GROUP BY 也能分组”。

今天 5 分钟带你彻底搞懂!
2. 语法速览
ROW_NUMBER() OVER (
PARTITION BY 列1, 列2 -- 分组
ORDER BY 列3 [ASC|DESC] -- 组内排序
) AS 别名
• SQL 标准函数,MySQL8.0+、PostgreSQL、SQL Server、Oracle、SQLite3.25+ 全支持。
• 不是“某个数据库专用”! 别再被面试官套路。
3. 核心区别一张表
维度 GROUP BY ROW_NUMBER() OVER(PARTITION BY …)
是否聚合 ✅ 每组只返回 1 行 ❌ 不聚合,原行数不变
能否选原列 ❌ 只能 SELECT 聚合列/聚合函数 ✅ 任意列都能选
执行顺序 先 WHERE → 再 GROUP → 再 HAVING 先 FROM → 再 WINDOW → 再 WHERE(窗口函数在 WHERE 之后)
典型场景 统计每组总数、平均值 取每组 TopN、去重最新记录
4. 实战:取每个用户最新订单
表结构
orders(
id bigint,
user_id int,
amount decimal(10,2),
create_time datetime
);
需求:拿到每个用户最新一笔订单的完整字段。
用 GROUP BY 几乎写不出来(除非子查询嵌套),用窗口函数 1 行搞定:
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY create_time DESC) AS rn
FROM orders
) t
WHERE rn = 1;
• 性能:给 (user_id, create_time) 建联合索引即可走覆盖索引,O(n) 级别。
• 扩展:想取“最新 3 笔”把 rn = 1 换成 rn <= 3 即可。
5. 常见坑
1. MySQL5.7 及以下不支持窗口函数,会报 ERROR 1064。
2. WHERE 里不能直接引用窗口列别名,需要在外层包一层子查询。
3. 与 GROUP BY 混用时要记住:窗口函数在 GROUP BY 之后执行,可以引用聚合结果。
SELECT user_id,
SUM(amount) AS total_amt,
ROW_NUMBER() OVER (ORDER BY SUM(amount) DESC) AS amt_rank
FROM orders
GROUP BY user_id;
4. 面试金句
“GROUP BY 是‘压缩’数据,窗口函数是‘透视’数据,二者根本不在一个维度工作。”
5. 结语
记住:
• 见到“每组 TopN、最新、去重” 先想窗口函数;
• 见到“每组统计、求和、求平均” 再用 GROUP BY。
收藏+点赞,下次面试不迷路!
----

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 10:18:36

VibeVoice-TTS推理服务封装:Docker容器化部署教程

VibeVoice-TTS推理服务封装&#xff1a;Docker容器化部署教程 1. 引言 1.1 业务场景描述 随着AIGC技术的快速发展&#xff0c;高质量、长时长、多角色对话式语音合成&#xff08;TTS&#xff09;在播客制作、有声书生成、虚拟角色对话等场景中需求日益增长。传统TTS系统往往…

作者头像 李华
网站建设 2026/9/30 15:38:19

Z-Image-Turbo实测对比:云端GPU 3小时搞定选型,省下万元显卡钱

Z-Image-Turbo实测对比&#xff1a;云端GPU 3小时搞定选型&#xff0c;省下万元显卡钱 1. 为什么你需要云端GPU测试方案 创业团队在选择AI绘图方案时&#xff0c;最头疼的就是硬件投入问题。传统方式需要购买或租赁高性能GPU服务器&#xff0c;动辄上万元的投入让很多初创团队…

作者头像 李华
网站建设 2026/9/29 11:24:47

AI手势识别企业应用案例:本地化部署实现零报错运行

AI手势识别企业应用案例&#xff1a;本地化部署实现零报错运行 1. 引言&#xff1a;AI手势识别的现实价值与落地挑战 随着人机交互技术的不断演进&#xff0c;AI手势识别正逐步从实验室走向工业、医疗、零售和智能办公等实际场景。相比传统的触控或语音交互&#xff0c;手势控…

作者头像 李华
网站建设 2026/9/30 15:26:49

工厂动作安全监测:AI方案比传感器便宜60%

工厂动作安全监测&#xff1a;AI方案比传感器便宜60% 引言 作为车间主任&#xff0c;您是否正在为安监整改通知发愁&#xff1f;传统安全监测方案需要布线安装大量传感器&#xff0c;不仅成本高昂&#xff08;单个传感器价格通常在2000-5000元&#xff09;&#xff0c;还需要…

作者头像 李华
网站建设 2026/10/2 21:32:05

Z-Image-ComfyUI避坑指南:云端GPU解决环境问题

Z-Image-ComfyUI避坑指南&#xff1a;云端GPU解决环境问题 1. 为什么选择云端GPU运行Z-Image 很多开发者在本地部署Z-Image时都会遇到各种头疼的问题——Python版本冲突、CUDA驱动不兼容、显存不足导致崩溃。这些问题就像拼图游戏缺少关键碎片&#xff0c;让人抓狂。 Z-Imag…

作者头像 李华
网站建设 2026/9/29 11:18:36

AI编舞系统揭秘:姿态生成+音乐匹配,艺术生也能玩转算法

AI编舞系统揭秘&#xff1a;姿态生成音乐匹配&#xff0c;艺术生也能玩转算法 引言&#xff1a;当舞蹈遇上AI 想象一下&#xff0c;你正在创作一支现代舞作品&#xff0c;却苦于找不到新颖的动作灵感。传统方法可能需要反复观看大量舞蹈视频或进行即兴创作&#xff0c;耗时耗…

作者头像 李华