sum() over (order by )
sum(x) over( partition by y ORDER BY z ) 分析
sum(x) over (partition by y order by z)
求安照y分区,然后按z排序,连续加当前顺序号前面的数值 (求每个分区中,按照z的顺序累计求和)
a b
a b sum
a b sum
之前用过row_number(),rank()等排序与over( partition by ... ORDER BY ...),这两个比较好理解: 先分组,然后在组内排名。
今天突然碰到sum(...) over( partition by ... ORDER BY ... ),居然搞不清除怎么执行的,所以查了些资料,做了下实操。
1. 从最简单的开始
sum(...) over( ),对所有行求和
sum(...) over( order by ... ),和 = 第一行 到 与当前行同序号行的最后一行的所有值求和,文字不太好理解,请看下图的算法解析。
![](/assets/blank.gif)
![](/assets/blank.gif)
with aa as ( SELECT 1 a,1 b, 3 c FROM dual union SELECT 2 a,2 b, 3 c FROM dual union SELECT 3 a,3 b, 3 c FROM dual union SELECT 4 a,4 b, 3 c FROM dual union SELECT 5 a,5 b, 3 c FROM dual union SELECT 6 a,5 b, 3 c FROM dual union SELECT 7 a,2 b, 3 c FROM dual union SELECT 8 a,2 b, 8 c FROM dual union SELECT 9 a,3 b, 3 c FROM dual ) SELECT a,b,c, sum(c) over(order by b) sum1,--有排序,求和当前行所在顺序号的C列所有值 sum(c) over() sum2--无排序,求和 C列所有值
sum() over()
2. 与 partition by 结合
sum(...) over( partition by... ),同组内所行求和
sum(...) over( partition by... order by ... ),同第1点中的排序求和原理,只是范围限制在组内
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
with aa as ( SELECT 1 a,1 b, 3 c FROM dual union SELECT 2 a,2 b, 3 c FROM dual union SELECT 3 a,3 b, 3 c FROM dual union SELECT 4 a,4 b, 3 c FROM dual union SELECT 5 a,5 b, 3 c FROM dual union SELECT 6 a,5 b, 3 c FROM dual union SELECT 7 a,2 b, 3 c FROM dual union SELECT 7 a,2 b, 8 c FROM dual union SELECT 9 a,3 b, 3 c FROM dual ) SELECT a,b,c,sum(c) over( partition by b ) partition_sum, sum(c) over( partition by b order by a desc) partition_order_sum FROM aa;
![](/assets/blank.gif)
view sql
转载于:https://www.cnblogs.com/wlzhang/p/5085321.html
sum() over (order by )相关推荐
- SQL 通过sum() over(order by ,rownum)实现财务现金日记账实例
SELECT 类型,to_char(发生日期,'yyyy-MM-dd') 发生日期,期初余额,借方金额,贷方金额, (CASE WHEN 借方金额>0 THEN '借' ...
- sum(x) over( partition by y ORDER BY z ) 分析
参考的博文出处:http://www.cnblogs.com/luhe/p/4155612.html,对博文进行了修改新增,修改了错误的地方 之前用过row_number(),rank()等排序与ov ...
- SQL SERVER:开窗函数 SUM() OVER() 数据统计中一例使用
由于前一段时间胃痛,导致博客园博客都停更了一个月左右.近几天,胃病终于稍微有所好转,决定重新写博文. 前几天,有个朋友刚好问到本人有关 SQL 语句,大致是原表有两列,分别为月份.月份销售额,而需要一 ...
- Oracle-分析函数之sum(...) over(...)
概述 Oracle函数 很久之前更新了一篇Oracle的函数博文 http://blog.csdn.net/yangshangwei/article/details/51425458,分析函数并没有包 ...
- oracle数据库中sum函数怎么用,SQL Sum()函数
在本教程中,我们将演示如何使用SQL SUM函数,此函数计算所有值或不同值的总和. 1. SQL SUM函数简介 SQL SUM函数是一个聚合函数,它返回所有或不同值的总和.需要注意的是,只能将SUM ...
- NOI2015 题解
D1T1 程序自己主动分析 题目大意:给定109个变量和n个等于/不等于的关系,推断是否能存在一组解满足全部关系 并查集傻逼题.NOIP小孩都会做 离散化一下,然后把相等的都用并查集并起来,推断每对不 ...
- c语言p gt name,c语言中strcmp(p-name,s)是什么意思?
c语言中strcmp(p->name,s)是什么意思?0 cg4tf2q52016.06.28浏览142次分享举报 网上看的c语言做学生管理表中的一个查找函数,其中有一段判断输入的名字与管理表中 ...
- 面试题01(C++)
收集一些面试相关的题目,大部分来自网络. (答案还有待进一步确认) 1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态? virtual修饰符会被隐 ...
- 数据库-分组语句及用法
MySQL GROUP BY 语句 GROUP BY 语句根据一个或多个列对结果集进行分组. 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数. 语法结构: SELECT column ...
最新文章
- reportNG定制化之失败截图及日志
- 实验七:层叠样式表(二)
- jquery 幻灯片图像切换效果
- 从0到1开发实战手机站(二):Git提交规范配置
- 转:在 C# 中使用 P/Invoke 调用 Mupdf 函数库显示 PDF 文档
- transformer bert 入门
- JSP、Servlet、Tomcat、JDK、J2EE版本比较
- 原创 | 为什么阿里巴巴要求谨慎使用ArrayList中的subList方法
- 致谢!华为全联接2020精彩回顾
- 【宝藏系列】推荐几款免费的视频转文字字幕的软件
- Netty权威指南(三)Netty入门应用
- xp计算机字体在哪,Windows XP系统字体库在哪-如何安装新字体
- (图像加密)常用图像置乱算法matlab实现(二)
- E-mark认证是什么?
- 光环五正在连接服务器,五亿美元打水漂了?追了这么久的光环系列,玩家根本没法看...
- error C2144: syntax error: 'int' should be preceded by ';'
- Jetson TX2 apt换源
- 高德地图实现仿qq,微信发送位置功能实现逻辑
- 用PDF格式协议的方式给PDF文档添加透明文字水印
- java和工程造价_( )不是Java的开发工具。
热门文章
- AcWing 891. Nim游戏(nim博弈)
- java 标识变量_Java变量与数据类型之一:Java编程规范,关键字与标识符
- Python使用sftp实现上传和下载功能(实例代码)
- 装文件存储服务器Fastdfs
- 香港城门隧道翻车意外酿一死16伤
- 通过web的方式动态查看tomcat的catalina.out的日志(web.py)
- 【世间万象】五甲万科董事长孙凯歌:五甲有红旗情节
- Red Hat EnterPrise Linux 5.4下web服务器的综合使用(普通站点、虚拟主机、安全性、...
- 人工智能平台 H2O.ai
- 18大产业的产业链全景图!(高清大图)