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

【SQL】窗口函数sum() over ( partition by xx order by xx)

目录

语法

数据

示例1

示例2

小结


数据

借用这篇文章的表格【SQL】最后一个能上车的人

乘客需要依次上车,每位乘客携带的行李重量不同,而客车有1000kg行李载重限制

Queue表:

TurnIDBusWeight
15A250
23A350
36A400
42B200
54B175
61B500

示例1

仅按照partition by开窗

select Turn, ID, Bus, weight, sum(weight) over(partition by Bus) T from Queue
TurnIDBusWeightT
15A2501000
23A3501000
36A4001000
42B200875
54B175875
61B500875

可以发现,窗口函数仅使用Partition by,类似于使用 group by 之后,对每一个分组进行一次 sum 计算,只是同一个分组下每一行都计算了相同的一次。

示例2

结合 partition by 和 order by 使用窗口函数

select Turn, ID, Bus, weight, sum(weight) over(partition by Bus order by Turn) T from Queue
TurnIDBusWeightT
15A250250
23A350600
36A4001000
42B200200
54B175375
61B500875

可以发现, 结合 partition by 和 order by 使用窗口函数后,意味着分组按行,对每一行之前的数据进行聚合计算,这种计算适合用于统计一些累加的数据分析,如http://t.csdnimg.cn/Dvdq5。 

小结

sum(), count(),max(), min()作为窗口函数使用时:

  • 需要指定聚合的列名
  • 当只用 partition by 没使用 order by 时,计算按照每个分区全部数值计算
  • 当同时使用 partition by 和 order by 时,计算按照逐行叠加

窗口函数可分为专用窗口函数和作为窗口函数使用的聚合函数

  • 专用窗口函数:row_number(),rank() ,dense_rank() 等
  • 非专用窗口函数:max(),min(), sum(), count() 等

http://www.mrgr.cn/news/14446.html

相关文章:

  • squareTest 破解
  • 如何在Rocky Linux 9上安装Django
  • 【安全】ssrf
  • Apache Flink内存模型
  • 若依前后端分离版本vue文件模版
  • 深度解析:防火墙技术在网络安全中的应用与发展
  • 从雨滴到数据--双翻斗雨量传感器让雨量可视化
  • 【C#】静态成员(static)与实例成员(非静态成员)的理解
  • 嵌入式Qt移植之Qt部署到Busybox根文件系统-思维导图-学习笔记-基于正点原子阿尔法开发板
  • 乱弹篇(43)我爱看短视频
  • 【实现100个unity特效之28】皮毛shader着色器 实现可以用动的毛茸茸毛绒绒效果
  • 运维-1.日志
  • 【AI】:探索在图像领域的无限可能
  • 设计模式之代理模式
  • JavaScript中闭包详解+举例,闭包的各种实践场景:高级技巧与实用指南
  • 数据结构——栈和队列
  • 用QT写一个加载模板文件,替换关键字为实际值
  • 《黑神话悟空》:国产3A游戏的崛起与AI绘画技术的融合
  • Unity实战案例 2D小游戏HappyGlass(游戏管理类脚本)
  • 引擎切换pdf识别简历分析