news 2026/6/9 6:06:40

第一篇笔记窗口函数(Window Function),记录我学习sql的命苦笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第一篇笔记窗口函数(Window Function),记录我学习sql的命苦笔记

窗口函数(Window Function)是:在不减少数据行数的前提下,对数据进行排名/计算/统计。。。
区分与group by:
SELECT category, SUM(total_sales)
FROM sales
GROUP BY category;
如果caegory 1 里面有好几个单品,用group by 不会告诉你每个单品的total——sales是多少,它会把category 1里面的所有sales都加起来。
而窗口不合并行,只“算数”。原来几行 → 还是几行。每一行多了一个“计算结果”。适合:排名、占比、累计、对比

SELECT category, SUM(total_sales) AS cat_sales
FROM sales
GROUP BY category;

categorycat_sales
C119
C236
C324

SELECT
product_id,
category,
total_sales,
SUM(total_sales) OVER (PARTITION BY category) AS cat_sales
FROM sales;

product_idcategorytotal_salescat_sales
1C11219
2C1719
3C21436
4C22236
5C32424

窗口函数的标准结构:
函数名() OVER (
PARTITION BY 分组规则
ORDER BY 排序规则
)
函数名:你要“算什么”?

ROW_NUMBER():强制唯一名次(1,2,3…)

RANK():并列会跳号(1,2,2,4)

DENSE_RANK():并列不跳号(1,2,2,3)

PARTITION BY:在哪些“范围”里算:
PARTITION BY category (每个category单独算)
PARTITION BY ≠ GROUP BY,回到我前面说过的

用 GROUP BY 的典型问题

“每个类别的总销量是多少?”
“每个部门的人数是多少?”
“每个用户的平均评分是多少?”

特点:每组只要一行答案

用 PARTITION BY 的典型问题

“每个商品在类内的排名?”
“每一行占本组总量的比例?”
“每一行与本组平均值差多少?”

特点:答案必须仍然按行存在(因为你要给每个商品/订单一个排名或对比)

ORDER BY:决定计算顺序
ORDER BY total_sales DESC, product_id ASC (先按销量高的排前面,销量一样,用 product_id 打破平局)
注意:这是给窗口函数用的排序,和查询最后的 ORDER BY 是两回事

例题:牛客刷题SQL48 每个商品的销售总额

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

管理权限累到手抽筋,智慧园区多租户管理方案高效管理

在大型园区中,除了建设方自用空间,往往会将多余空间出租给其他企业,同一空间不同组织的复杂业态让管理复杂程度呈指数级增长。权责不清、数据不通、成本不降等问题,正不断消耗着园区管理方的精力,也影响着租户的体验感…

作者头像 李华
网站建设 2026/5/30 8:42:25

基于单片机的室内空气质量监控系统设计

2系统硬件设计 2.1 单片机的选择与设计 为了实现课题要求,需要选择一款最适合的单片机来作为主控制器。因为本设计中涉及到温湿度采集模块、甲醛采集模块、显示模块、按键模块、报警模块、加湿及风扇模块。其中,温湿度采集、甲醛采集和按键是输入&#x…

作者头像 李华
网站建设 2026/6/6 13:57:36

助力航空精密制造:Tube Qualify在管路在线检测与弯曲分析中的应用

航空管路系统(燃油、液压、气动)的复杂管路,往往带有法兰、接头等部件,具有数量多、形状多样、结构复杂等特点,是航空装备的关键部件之一。为保证设备的平稳运行,在装配时,对管路的尺寸精度要求…

作者头像 李华
网站建设 2026/5/31 15:51:04

一篇文章讲透网络协议知识体系:从TCP/IP、HTTP到NoSQL的协议栈全景

面试常用知识点总结 1. HTTP协议 HTTP请求和响应的组成部分 常见的HTTP方法及其用途 常见的HTTP状态码及其含义 HTTP/1.1和HTTP/2的主要区别 无状态协议的含义及其影响 2. TCP/IP协议栈 TCP/IP协议栈的四层结构及其功能 各层常见协议及其特点 TCP和UDP的区别 TCP三次握手和四次…

作者头像 李华
网站建设 2026/5/29 1:30:35

网络协议硬核解析:应对HTTP/TCP/UDP及NoSQL的灵魂拷问与设计原理

面试常用知识点总结 1. HTTP协议 HTTP请求和响应的组成部分 常见的HTTP方法及其用途 常见的HTTP状态码及其含义 HTTP/1.1和HTTP/2的主要区别 无状态协议的含义及其影响 2. TCP/IP协议栈 TCP/IP协议栈的四层结构及其功能 各层常见协议及其特点 TCP和UDP的区别 TCP三次握手和四次…

作者头像 李华