当前位置: 首页 > 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() 等

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于game-based算法的动态频谱访问matlab仿真
  • 重构多重children数据 减少数据
  • 服务启动方法LINUX
  • JS数据类型——【set】精讲
  • 前沿重器[55] | prompt综述的解释和个人思考
  • FreeSWITCH 1.10.10 简单图形化界面28 - 麒麟V10 SP3服务器系统X86和ARM版本安装FreeSWITCH
  • 从行或列的角度思考矩阵-向量乘法(matrix-vector multiplication)
  • I2C总线中的时钟延长和死锁
  • 华为EVPN网关配置
  • OpenCV几何图像变换(8)调整图像大小的函数resize()的使用
  • 学懂C++(四十三):深入剖析现代C++设计模式:从常用经典到前沿的全面解析
  • 有限差分学习笔记
  • Cortex-A7的GIC(通用中断控制器):中断处理状态机
  • 知识图谱用于推荐系统问题
  • odoo SyntaxWarning: invalid escape sequence ‘\w‘
  • axios 和 cookie 的那些事
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • PermissionScope Swift4 兼容问题
  • Promise面试题,控制异步流程
  • python3 使用 asyncio 代替线程
  • Vue2 SSR 的优化之旅
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 前端面试之闭包
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 时间复杂度与空间复杂度分析
  • 微信小程序--------语音识别(前端自己也能玩)
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 正则表达式
  • 阿里云移动端播放器高级功能介绍
  • ​secrets --- 生成管理密码的安全随机数​
  • # C++之functional库用法整理
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (10)STL算法之搜索(二) 二分查找
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (备份) esp32 GPIO
  • (二)windows配置JDK环境
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (四)linux文件内容查看
  • (转载)hibernate缓存
  • .Net - 类的介绍
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .NET设计模式(11):组合模式(Composite Pattern)
  • /proc/stat文件详解(翻译)
  • ::
  • @Autowired自动装配
  • @component注解的分类
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [<死锁专题>]
  • [Android View] 可绘制形状 (Shape Xml)
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)
  • [BZOJ4016][FJOI2014]最短路径树问题