当前位置: 首页 > news >正文

第一篇笔记窗口函数(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 每个商品的销售总额

http://www.jsqmd.com/news/210931/

相关文章:

  • 基于单片机的多功能智能台灯(有完整资料)
  • 基于单片机的温度控制系统的设计
  • 【SLAM】嵌入式系统硬件存储及其架构设计
  • Mysql中event用法详解,零基础快速入门必看!
  • 性能测试参数化技术详解—项目实战教学
  • 基于单片机的无线通信报警系统
  • 基于单片机的轴承售卖系统设计
  • 深度测评专科生必用的9款AI论文软件
  • 基于单片机的室内空气质量监控系统设计
  • 基于PLC的控制分拣机械手设计 ——硬件设计
  • 基于单片机的视觉导航小车设计
  • 吐血推荐MBA必用TOP8 AI论文软件测评
  • 基于单片机的语音存储与回放系统设计
  • 信息安全从入门到精通:技术、管理与法规的全景解读
  • 基于单片机的蓝牙无线密码锁设计
  • 如何规划你的网络安全认证之路?详解通往CISSP的“黄金跳板”证书
  • 智能能耗优化:汽车制造企业如何落地EMS系统
  • 图解TCP核心机制:一张速查表搞定协议要点、面试题与实战调优
  • 基于单片机的智能晾衣架控制系统的设计与实现
  • 助力航空精密制造:Tube Qualify在管路在线检测与弯曲分析中的应用
  • 2026移动端工程师AI大模型3个月速成计划:从App开发到智能体架构师!
  • 网络协议硬核解析:应对HTTP/TCP/UDP及NoSQL的灵魂拷问与设计原理
  • 谷歌重磅测试Nano Banana2Flash AI图像模型,极速+高性价比双突破
  • 解决报错Error in sitecustomize; set PYTHONVERBOSE for traceback:NameError: name ‘reload‘ is not defined
  • 一篇文章讲透网络协议知识体系:从TCP/IP、HTTP到NoSQL的协议栈全景
  • 只会写Prompt怎么行?揭秘生产级Agent炼成之路:这10大工程维度,你一定要懂!
  • 突破传统点式测量:DIC技术在复合材料全场变形与损伤表征中的应用
  • 配管配线工程量计算规范实操
  • 耐达讯自动化CAN转PROFIBUS网关让软启动器如何让包装线告别“信号迷宫”
  • 3C电子制造质检升级:拍照式蓝光3D扫描在精密测量中的应用实践