网易首页 > 网易号 > 正文 申请入驻

窗口函数:SQL里被集体遗忘的瑞士军刀

0
分享至

你正在面试。面试官抛出一道题:"每个销售订单,我要看到金额,还要看到该销售员的累计销售额。"你脑子里闪过GROUP BY,但知道它会压缩行数。你想到自连接,但三个CTE嵌套下去已经看不懂自己在写什么。这时候如果有人说"用窗口函数",你会先愣住——然后问:为什么没人早点告诉我?

事件现场:一个被反复踩中的坑


原文作者开篇就还原了这个场景。不是"可能遇到",是"你会遇到"——几周后的数据分析工作,或者面试现场。问题很具体:既要保留每行明细,又要基于其他行计算新值。GROUP BY把8行压成3行,不行。自连接能写,但代码像意大利面。Python可以,但得先把数据全拉出来。

然后窗口函数出现。作者用了一个词:cheated(被欺骗感)。不是愤怒,是那种"原来有捷径"的轻微懊恼。这种情绪很真实——技术社区对基础工具的系统性忽视,让无数人白白绕路。

核心区别一句话说清:GROUP BY是8行进3行出,窗口函数是8行进8行出,每行多一个计算值。行数不变,信息增加。这个设计选择决定了它能解决什么问题。

语法骨架:OVER()就是开关

窗口函数的语法结构很固定。function_name()后面跟OVER(),里面三个可选子句:

PARTITION BY——分组,类似GROUP BY但保留行。ORDER BY——定义窗口内的行顺序。ROWS/RANGE BETWEEN——精确控制包含哪些行。没有PARTITION BY时,窗口是整个表。

作者用SQLite演示,建了一张销售表:12条记录,4个销售员,3个区域,时间跨度从1月到2月。数据量小到能一眼看完,但足够展示各种场景。

聚合函数(SUM/AVG/COUNT/MIN/MAX)加上OVER()立刻变身窗口函数。作者举的例子很业务化:公司总额、公司均值、个人总额、个人均值、个人占比。这些指标在BI报表里天天见,但很多人用子查询或自连接硬算。

代码里有个细节:ROUND(100.0 * amount / SUM(amount) OVER (PARTITION BY rep_name), 1)。这里100.0不是100,是为了强制浮点除法。SQL里这种小坑,写过的人都知道。

人物动作:为什么"没人用"

原文标题说"没人用"(Nobody Uses),作者没有直接解释原因,但从行文能反推几个逻辑。第一,教学顺序问题。SQL入门教SELECT、WHERE、GROUP BY,窗口函数被放在"高级"章节,很多人没走到那章就停了。第二,认知框架冲突。GROUP BY的思维惯性太强——"要汇总就得压行",这个直觉错了。第三,命名障碍。"窗口函数"这个翻译本身不直观,OVER()也不像JOIN那样有画面感。

作者的身份设定是"那个告诉你的人"。全文用第二人称"你",模拟对话感。这种写法降低心理门槛,但也暗示一个事实:技术文档的常规写法失败了,需要有人用"你会遇到这个问题"的场景来补课。

从商业逻辑看,这是典型的工具 adoption gap(采用鸿沟)。功能存在、文档齐全、性能合格,但用户不知道或不会用。数据库厂商(Oracle、PostgreSQL、SQL Server、SQLite)都实现了窗口函数,但教育市场和开发者社区没跟上。对科技从业者来说,这意味着什么?面试准备清单里缺了一项,代码审查时多了一种优化机会,技术选型时少了一个拒绝SQL的理由。

行业影响:被低估的生产力杠杆

窗口函数2003年就被写进SQL标准(ISO/IEC 9075-2:2003),但普及速度远慢于它的实用价值。PostgreSQL 8.4(2009)、SQL Server 2005、Oracle 8i(1999)陆续支持,SQLite是2018年的3.25.0版本。这个时间表说明:技术成熟度和用户认知度是两条曲线。

对25-40岁的科技从业者,这个工具的具体价值在哪?减少数据搬运——不用为了计算排名或累计值把数据导到Python。减少代码复杂度——一个OVER()替代多层CTE。减少沟通成本——SQL文件直接可读,不用解释"这段Python在算什么"。

原文没提但隐含的一个点是:现代数据栈(dbt、Looker、Metabase)的兴起,让SQL曝光度回升。窗口函数从"数据库专家技能"变成"数据分析师标配"。这个转变正在发生,但速度不够快。

作者最后留了一个开放结构——代码示例未完,但核心信息已经传递:窗口函数的存在、语法、基本用法。没有"总结三点",没有"立即行动",是那种"你知道了,接下来看你怎么用"的收尾。

如果窗口函数真的被大规模采用,SQL和Python在数据分析中的分工会不会重新洗牌?那些用Pandas写groupby().cumsum()的场景,有多少其实该留在数据库里完成?

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
访华前,特朗普向31国抛出一个问题:中美若有摩擦,北约帮不帮

访华前,特朗普向31国抛出一个问题:中美若有摩擦,北约帮不帮

让生活充满温暖
2026-05-07 14:09:08
她拒唱国歌否认是中国籍,还将俩儿子户口落到国外,她现状如何?

她拒唱国歌否认是中国籍,还将俩儿子户口落到国外,她现状如何?

混沌录
2026-04-28 22:29:08
震惊!月薪9500元男子被相亲女嫌弃,直言不合适,其对话登上热搜

震惊!月薪9500元男子被相亲女嫌弃,直言不合适,其对话登上热搜

火山詩话
2026-05-06 06:50:06
实至名归!明天开始好运开闸!三大生肖人气爆棚、赚钱一路顺

实至名归!明天开始好运开闸!三大生肖人气爆棚、赚钱一路顺

毅谈生肖
2026-05-07 11:11:29
先是海参崴,再是图瓦和库页岛,俄罗斯对中国,心态完全变了

先是海参崴,再是图瓦和库页岛,俄罗斯对中国,心态完全变了

番外行
2026-05-07 10:07:04
周受资红毯比心可爱,贝佐斯花千万让老婆站C位,邓文迪母女抢镜

周受资红毯比心可爱,贝佐斯花千万让老婆站C位,邓文迪母女抢镜

商务范
2026-05-06 19:16:30
进过一次家长群,就懂了真正的狂野

进过一次家长群,就懂了真正的狂野

不相及研究所
2026-04-23 22:37:10
放弃罗德里!皇马锁定 1.2 亿新中场核心,英超王牌或空降伯纳乌

放弃罗德里!皇马锁定 1.2 亿新中场核心,英超王牌或空降伯纳乌

澜归序
2026-05-07 05:57:43
2013年,金正哲联手张成泽发动朝鲜兵变,因一细节败露,双遭反杀

2013年,金正哲联手张成泽发动朝鲜兵变,因一细节败露,双遭反杀

阿胡
2025-03-11 13:28:03
哈登又拉胯了!美记:又一场典型的哈登季后赛表现,三分7投1中!

哈登又拉胯了!美记:又一场典型的哈登季后赛表现,三分7投1中!

爱体育
2026-05-06 23:20:50
这妹子眼神太纯欲了,打戏也很投入!

这妹子眼神太纯欲了,打戏也很投入!

贵圈真乱
2026-05-07 12:34:08
“你要没有就找去!”王楚钦受伤后一声吼,国乒后勤漏洞藏不住了

“你要没有就找去!”王楚钦受伤后一声吼,国乒后勤漏洞藏不住了

曹老师评球
2026-05-03 20:45:29
深圳热门商圈旁路段长期被“僵尸车”霸占,绵延近一公里,市民通行全靠“挤”,记者实地走访

深圳热门商圈旁路段长期被“僵尸车”霸占,绵延近一公里,市民通行全靠“挤”,记者实地走访

深圳晚报
2026-05-07 12:11:20
千年难遇的美人,太漂亮了,没有一点毛病,太完美了

千年难遇的美人,太漂亮了,没有一点毛病,太完美了

情感大头说说
2026-04-24 12:46:24
20年代,林徽因与冰心郊游的唯一合影,这是他们的真实容颜

20年代,林徽因与冰心郊游的唯一合影,这是他们的真实容颜

以茶带书
2026-04-25 19:22:44
豪砸140亿遭背刺?印尼露獠牙转签日本军单!中企停产:不伺候了

豪砸140亿遭背刺?印尼露獠牙转签日本军单!中企停产:不伺候了

阿郎娱乐
2026-05-07 12:32:39
韩媒:中国队,放马过来! 申裕斌已强势回归要为小组赛0-3复仇

韩媒:中国队,放马过来! 申裕斌已强势回归要为小组赛0-3复仇

劲爆体坛
2026-05-07 07:46:09
国家喊你“存肌肉”了!这5个迹象说明肌肉在流失,第3个太常见

国家喊你“存肌肉”了!这5个迹象说明肌肉在流失,第3个太常见

人民日报健康客户端
2026-05-06 20:14:23
三星突发公告,在中国大陆停售所有家电!包括电视、显示器、空调、冰箱、洗衣机……网友感慨:又是时代的眼泪

三星突发公告,在中国大陆停售所有家电!包括电视、显示器、空调、冰箱、洗衣机……网友感慨:又是时代的眼泪

都市快报橙柿互动
2026-05-06 20:43:24
1945年延安七大:七百余人冒险赴会,多人牺牲在路途上

1945年延安七大:七百余人冒险赴会,多人牺牲在路途上

小莜读史
2026-05-06 21:02:11
2026-05-07 14:56:49
碳基打工人
碳基打工人
坐标北京,靠咖啡续命,靠小红书下饭的普通人类。
2251文章数 31关注度
往期回顾 全部

科技要闻

凌晨突发!马斯克租22万块GPU给“死敌”

头条要闻

美国博主自发抵制:不想收钱抹黑中国

头条要闻

美国博主自发抵制:不想收钱抹黑中国

体育要闻

阿森纳巴黎会师欧冠决赛!5月31日开战

娱乐要闻

小S阿雅重返大S母校,翻看大S毕业照

财经要闻

特朗普:美伊“很有可能”达成协议

汽车要闻

理想为什么不做轿车,有了解释……

态度原创

教育
游戏
房产
艺术
公开课

教育要闻

新传考研名词解释:社会抗争行为

《FGO》大天使贞德好不好用?《FGO》奏章4贞德养成攻略

房产要闻

五一海南楼市,太淡了!

艺术要闻

这位老教授笔下的青年,活力满满

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版