参考的博文出处: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 ) 分析相关推荐

  1. oracle sum(col1) over(partition by col2 order by col3):实现分组递增汇总

    应公司业务要求,需要对数据进行分组汇总做辅助列进行查询 所以使用到了sum(col1) over(partition by col2 order by col3)函数,为了学习与提高在此进行记录. 1 ...

  2. 累计求和sum(A1)over(partition by A2 order by A3)

    组内排序求和 1.需求:根据所给数据要取出每个人每一年所兑付的往年金额汇总 用了传统的方法sum()over(order by)无法实现,但是见到网上根据部门编号累计汇总工资是可以的,但是这里面没有一 ...

  3. Hive分析函数之SUM,AVG,MIN和MAX OVER(PARTITION BY xxx order by xxx,用于求一段时间内截至到每天的累计访问次数、平均访问次数、最小访问次数、最大访问次

            Hive分析函数之SUM,AVG,MIN和MAX OVER(PARTITION BY xxx order by xxx,用于求一段时间内截至到每天的累计访问次数.平均访问次数.最小访问 ...

  4. 分析函数入门sum...over(partition by xxx order by yyy rows between zzz)

    分析函数是什么? 分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值. 分析函数和聚合函数的不 ...

  5. ORACLE中ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)用法

    row_number()  OVER  (  PARTITION  BY  COL1  ORDER  BY  COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组 ...

  6. 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排序,而此函 ...

  7. RANK() OVER(PARTITION BY deptno ORDER BY empno)

    row_number()和rownum差不多,功能更强一点(可以在各个分组内从1开时排序) rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内) dense_rank()l是连 ...

  8. 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 ...

  9. SQL函数学习 之 DENSE_RANK() OVER (PARTITION BY col2 ORDER BY col3 DESC) AS seq

    前言:单词介绍 DENSE        连续(愿意:密集的) RANK           排序(原意:等级) PARTITION  分组(原意:划分) DENSE        连续(愿意:密集的 ...

最新文章

  1. Redis 哈希结构内存模型剖析
  2. java linux urlencode_iOS urlEncode编码解码(非过时方法,已解决)
  3. python代码规范 自动优化工具Black
  4. 11-机器学习开发流程--初识
  5. 计算机入会大会新生发言稿,新生大会发言稿(精选3篇)
  6. 运算符之:5、位运算符(7个)
  7. 容器宿主机数据库_解决Docker容器内访问宿主机MySQL数据库服务器的问题
  8. android:videoView
  9. 用户的大量数据保存在计算机的,计算机基础理论复习题
  10. OpenGL基础27:网格
  11. python缩进格式错误修改_Python,意外的缩进错误解析,Pythonunexpectedindent,解决,方法...
  12. RabbitMQ 菜鸟教程
  13. 图画日记怎么画_画画日记(通用10篇)
  14. 中了勒索病毒,该如何恢复数据?
  15. 第十届蓝桥杯完整版题解 (详细讲解) (新鲜出炉)
  16. 【C语言】百度搜歌(只用歌曲或者歌手名字去搜索实现)
  17. 深蓝学院-视觉SLAM课程-第4讲作业(T5矩阵微分,T6手写高斯牛顿,T7批量MLE)
  18. 实战NLP beginner任务一:基于机器学习的文本分类
  19. 利用melendy插入参考文献_Q基因的转座子插入突变导致去驯化过程中普通小麦重获脆穗性...
  20. 【Games101】图形的基础变换 总结

热门文章

  1. anylogic中如何构建复杂网络_如何对复杂网络建模所需要的数据进行预处理
  2. linux ubuntu安装 mono,在 Ubuntu Server 上安装配置 Mono 生产环境
  3. 错误:document.getElementById(userForm).submit();Object is not a function
  4. flutter 分割线_Flutter 底部弹框 showModalBottomSheet 使用Demo
  5. html 自动适应手机屏幕大小,HTML5 canvas自适应手机屏幕大小的一种解决方案
  6. RuntimeError: [enforce fail at inline_container.cc:145] . PytorchStreamReader failed reading zip arc
  7. [2021-CVPR] Fine-grained Angular Contrastive Learning with Coarse Labels 论文简析
  8. linux中如何查看某个端口是否被占用,LINUX中如何查看某个端口是否被占用
  9. 潜流式湿地计算_人工湿地计算书
  10. 计算机2级u盘作弊,一种带LED指示灯的计算机考试防U盘作弊装置制造方法及图纸...