sum(x) over( partition by y ORDER BY z ) 分析
参考的博文出处:http://www.cnblogs.com/luhe/p/4155612.html,对博文进行了修改新增,修改了错误的地方
之前用过row_number(),rank()等排序与over( partition by ... ORDER BY ...),这两个比较好理解: 先分组,然后在组内排名。
今天突然碰到sum(...) over( partition by ... ORDER BY ... ),居然搞不清除怎么执行的,所以查了些资料,做了下实操。
1. 从最简单的开始
sum(...) over( ),对所有行求和
sum(...) over( order by ... ),和 = 第一行 到 与当前行同序号行的最后一行的所有值求和,文字不太好理解,请看下图的算法解析。
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列所有值
from aa
补充 by 松门一枝花:
WITH aa AS( SELECT 1 a,1 b, 3 c FROM dualUNIONSELECT 2 a,2 b, 3 c FROM dualUNIONSELECT 3 a,3 b, 3 c FROM dualUNIONSELECT 4 a,4 b, 3 c FROM dualUNIONSELECT 5 a,5 b, 3 c FROM dualUNIONSELECT 6 a,5 b, 3 c FROM dualUNIONSELECT 7 a,2 b, 3 c FROM dualUNIONSELECT 8 a,2 b, 8 c FROM dualUNIONSELECT 9 a,3 b, 3 c FROM dual)
SELECT a,b,c,SUM(c) over(order by a) sum1,--有排序,求和当前行所在顺序号的C列所有值--【博主新增的】SUM(c) over(order by b) sum2,--有排序,求和当前行所在顺序号的C列所有值SUM(c) over() sum3 FROM aa order by a; --无排序,求和 C列所有值
2. 与 partition by 结合
sum(...) over( partition by... ),同组内所行求和
sum(...) over( partition by... order by ... ),同第1点中的排序求和原理,只是范围限制在组内
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_sumFROM aa;
sum(x) over( partition by y ORDER BY z ) 分析相关推荐
- oracle sum(col1) over(partition by col2 order by col3):实现分组递增汇总
应公司业务要求,需要对数据进行分组汇总做辅助列进行查询 所以使用到了sum(col1) over(partition by col2 order by col3)函数,为了学习与提高在此进行记录. 1 ...
- 累计求和sum(A1)over(partition by A2 order by A3)
组内排序求和 1.需求:根据所给数据要取出每个人每一年所兑付的往年金额汇总 用了传统的方法sum()over(order by)无法实现,但是见到网上根据部门编号累计汇总工资是可以的,但是这里面没有一 ...
- Hive分析函数之SUM,AVG,MIN和MAX OVER(PARTITION BY xxx order by xxx,用于求一段时间内截至到每天的累计访问次数、平均访问次数、最小访问次数、最大访问次
Hive分析函数之SUM,AVG,MIN和MAX OVER(PARTITION BY xxx order by xxx,用于求一段时间内截至到每天的累计访问次数.平均访问次数.最小访问 ...
- 分析函数入门sum...over(partition by xxx order by yyy rows between zzz)
分析函数是什么? 分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值. 分析函数和聚合函数的不 ...
- ORACLE中ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)用法
row_number() OVER ( PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组 ...
- mysql col与row_使用mysql实现row_number() over(partition by col1 order by col2)函数
[color=red]row_number() OVER (PARTITION BY COL1 ORDER BY COL2)[/color] 表示根据COL1分组,在分组内部根据 COL2排序,而此函 ...
- RANK() OVER(PARTITION BY deptno ORDER BY empno)
row_number()和rownum差不多,功能更强一点(可以在各个分组内从1开时排序) rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内) dense_rank()l是连 ...
- Row_number () over (partition by col1 order by col2)的用法
ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2) --(其中,COL1,COL2可以为多列) select xt.id, xt.it ...
- SQL函数学习 之 DENSE_RANK() OVER (PARTITION BY col2 ORDER BY col3 DESC) AS seq
前言:单词介绍 DENSE 连续(愿意:密集的) RANK 排序(原意:等级) PARTITION 分组(原意:划分) DENSE 连续(愿意:密集的 ...
最新文章
- Redis 哈希结构内存模型剖析
- java linux urlencode_iOS urlEncode编码解码(非过时方法,已解决)
- python代码规范 自动优化工具Black
- 11-机器学习开发流程--初识
- 计算机入会大会新生发言稿,新生大会发言稿(精选3篇)
- 运算符之:5、位运算符(7个)
- 容器宿主机数据库_解决Docker容器内访问宿主机MySQL数据库服务器的问题
- android:videoView
- 用户的大量数据保存在计算机的,计算机基础理论复习题
- OpenGL基础27:网格
- python缩进格式错误修改_Python,意外的缩进错误解析,Pythonunexpectedindent,解决,方法...
- RabbitMQ 菜鸟教程
- 图画日记怎么画_画画日记(通用10篇)
- 中了勒索病毒,该如何恢复数据?
- 第十届蓝桥杯完整版题解 (详细讲解) (新鲜出炉)
- 【C语言】百度搜歌(只用歌曲或者歌手名字去搜索实现)
- 深蓝学院-视觉SLAM课程-第4讲作业(T5矩阵微分,T6手写高斯牛顿,T7批量MLE)
- 实战NLP beginner任务一:基于机器学习的文本分类
- 利用melendy插入参考文献_Q基因的转座子插入突变导致去驯化过程中普通小麦重获脆穗性...
- 【Games101】图形的基础变换 总结
热门文章
- anylogic中如何构建复杂网络_如何对复杂网络建模所需要的数据进行预处理
- linux ubuntu安装 mono,在 Ubuntu Server 上安装配置 Mono 生产环境
- 错误:document.getElementById(userForm).submit();Object is not a function
- flutter 分割线_Flutter 底部弹框 showModalBottomSheet 使用Demo
- html 自动适应手机屏幕大小,HTML5 canvas自适应手机屏幕大小的一种解决方案
- RuntimeError: [enforce fail at inline_container.cc:145] . PytorchStreamReader failed reading zip arc
- [2021-CVPR] Fine-grained Angular Contrastive Learning with Coarse Labels 论文简析
- linux中如何查看某个端口是否被占用,LINUX中如何查看某个端口是否被占用
- 潜流式湿地计算_人工湿地计算书
- 计算机2级u盘作弊,一种带LED指示灯的计算机考试防U盘作弊装置制造方法及图纸...