news 2026/1/28 5:10:16

面试官: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/1/28 2:16:07

5个最火AI生图镜像推荐:Z-Image领衔,10块钱全体验

5个最火AI生图镜像推荐&#xff1a;Z-Image领衔&#xff0c;10块钱全体验 引言&#xff1a;为什么选择云端AI生图镜像&#xff1f; 作为一名产品经理&#xff0c;我经常需要调研各种AI生图工具来评估产品设计方案的可行性。但每次都要折腾本地部署&#xff0c;从安装环境到下…

作者头像 李华
网站建设 2026/1/15 3:22:04

学霸同款9个AI论文平台,专科生搞定毕业论文+格式规范!

学霸同款9个AI论文平台&#xff0c;专科生搞定毕业论文格式规范&#xff01; AI 工具如何助力论文写作&#xff1f; 在当前的学术环境中&#xff0c;AI 工具已经成为众多学生和科研人员的重要助手。尤其是在论文写作过程中&#xff0c;AI 技术不仅能够显著降低 AIGC 率&#xf…

作者头像 李华
网站建设 2026/1/25 23:07:33

彩虹骨骼可视化技术:MediaPipe Hands应用指南

彩虹骨骼可视化技术&#xff1a;MediaPipe Hands应用指南 1. 引言&#xff1a;AI 手势识别与追踪的现实价值 随着人机交互技术的不断演进&#xff0c;手势识别正逐步从科幻场景走向日常应用。无论是智能驾驶中的非接触控制、AR/VR中的自然交互&#xff0c;还是远程教育与无障…

作者头像 李华
网站建设 2026/1/13 12:36:04

COCO关键点检测5分钟入门:免环境配置,打开浏览器就能跑

COCO关键点检测5分钟入门&#xff1a;免环境配置&#xff0c;打开浏览器就能跑 引言&#xff1a;为什么产品经理需要了解关键点检测&#xff1f; 作为转行AI的产品经理&#xff0c;你可能经常听到"关键点检测"、"姿态估计"这些专业术语。简单来说&#x…

作者头像 李华
网站建设 2026/1/14 22:46:51

零代码玩转Z-Image:云端可视化界面,设计师友好方案

零代码玩转Z-Image&#xff1a;云端可视化界面&#xff0c;设计师友好方案 引言&#xff1a;当AI绘画遇上艺术教育 艺术院校的师生们正面临一个有趣的矛盾&#xff1a;一方面&#xff0c;AI图像生成技术能极大拓展创作可能性&#xff1b;另一方面&#xff0c;编程门槛让许多艺…

作者头像 李华
网站建设 2026/1/23 13:14:41

没显卡怎么玩Z-Image?ComfyUI云端镜像2块钱搞定

没显卡怎么玩Z-Image&#xff1f;ComfyUI云端镜像2块钱搞定 引言&#xff1a;设计师的AI绘画困境 最近在小红书上刷到各种用Z-Image生成的艺术作品&#xff0c;作为设计师的你一定心痒难耐——这些充满未来感的插画、电影级的概念设计&#xff0c;如果能用到客户项目中该多好…

作者头像 李华