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;
复制代码

  



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539812.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea数据库反向生成实体类_IntelliJ IDEA 的数据库管理工具实在太方便了

1. 前言对于一个有软件洁癖的人,能用现有的软件解决问题的绝不安装新的软件。Java后端开发主要跟数据库打交道,所以数据库图形化界面(GUI)是少不了的。通常图形化操作关系型数据库(RMDBS)大多数人会选择Nav…

家装强电弱电布线图_关于你不知道的弱电改造详解 提早了解好做准备

在我们的日常生活中,没有一处是不用电的。洗衣、做饭、看电视,这些我们生活中看起来平淡无奇的小事,离开电却难以为继。今天,装一网为大家介绍弱电改造,很多业主不知道弱电改造是什么意思,也不知道弱电改造…

SecureCRT配置前--Linux网卡设置

在用SecureCRT连接Linux的时候,需要设置Linux的网卡信息。 1、输入命令:setup,弹出配置,选择Network configuration,配置网络 2、选择device configuration 配置网卡 3、选择eth0,第一块网卡 4、配置eth0网…

cdn节点人少延迟高_让你刷剧一直爽,CDN原理是什么

鼠年春节,一个特别的春节。受疫情影响,假期比往年长了一些。这么长时间宅在家中,想必大家除了睡觉,花费时间最多的就是“刷剧”了。今天讲的技术主题就和“刷剧”有关,它是CDN。我们通过观察CDN的技术来看CDN的产业发展…

图形的装饰教案计算机,《电脑图案设计师》教案教学设计

《电脑图案设计师》教案教学设计《电脑图案设计师》是湖北长江出版集团出版的小学《信息技术》四年级上册第四单元第二次活动的内容。这节课研究的是Windows画图软件中的“翻转/旋转”和“拉伸/扭曲”两条命令。根据我们对学生的了解和教材的分析,认为这两个知识点如…

boot spring 没有父子容器_Spring 系列(二):Spring MVC的父子容器

1.背景在使用Spring MVC时候大部分同学都会定义两个配置文件,一个是Spring的配置文件spring.xml,另一个是Spring MVC的配置文件spring-mvc.xml。在这里给大家抛个问题,如果在spring.xml和spring-mvc.xml文件中同时定义一个相同id的单例bean会…

Linux创建目录【命令】

创建一个hello目录 mkdir /hello -------------------------------------- mkdir 相当于 make directory 相对路径:不从/开始,而是从当前目录开始,例如:data/ ,mnt/zmg绝对路径:从/开始的目录,就叫绝对…

手术后多久可以做胆摘除_近视手术后多久可以化眼妆?

今天小编就和大家聊聊,做完近视手术后,多久可以画眼妆?很多女生做完手术后,非常关心的一件事情就是多久可以化妆,化妆对手术效果有没有影响?今天,小编就此问题特别咨询了屈光手术专家。专家建议…

【CentOS 7LAMP架构4】,PHP5和PHP7的安装和配置#171219

2019独角兽企业重金招聘Python工程师标准>>> hellopasswd 安装PHP5 PHP官网www.php.net当前主流版本为5.6/7.1cd /usr/local/srcwget http://cn2.php.net/distributions/php-5.6.30.tar.bz2bzip2 -d php-5.6.30.tar.bz2tar xvf php-5.6.30.tarcd php-5.6.30./config…

Linux修改文件内容【命令】

在/opt/hello/world.txt文件中增加一行 hello linux world ! 方法一: 命令是:vi,vim vi 编辑器,相当于记事本,有编辑功能,但较弱 vim 复杂的编辑器,相当于windows的 editplus, notepad 等 …

hadoop中的9000端口代表什么_hadoop服务快速部署

这篇文章记录下针对不同的hadoop版本进行服务部署的过程,希望可以帮到你们安装docker hadoop2.7.0一键部署docker hadoop3.0.0集群(一个master 三个slave)安装docker hadoop 3.2.0 a、docker启动 b、docker compose方式启动安装hadoop 2.7.0版本安装命令docker run …

迷你世界电锯机器人_迷你世界:生产果冻的机器人,1分钟产出500个,10种口味随意挑选...

迷你世界是一款具有创意性和想象力的3D沙盒游戏,在游戏中玩家们总是能造出各种好玩的建筑物,毕竟背包里拥有成百上千的道具可供玩家们随意使用,而且一些道具相互叠加使用,还能产生更有趣的效果。近日就有一位大神使用多种道具&…

底层实现红黑树_图解:红黑树

注:本文比较硬核但是很值得大家花心思看完,看完你一定会有所收获的红黑树是面试中一个很经典也很有难度的知识点,网传字节跳动面试官最喜欢问这个问题。很多人会觉得这个知识点太难,不想花太多功夫去了解,也有人会认为…

处于停机等非正常状态_一文聊透 Dubbo 优雅停机

1 前言一年之前,我曾经写过一篇《研究优雅停机时的一点思考》,主要介绍了 kill -9,kill -15 两个 Linux 指令的含义,并且针对性的聊到了 Spring Boot 应用如何正确的优雅停机,算是本文的前置文章,如果你对上…

WinDbg 命令三部曲:(一)WinDbg 命令手册

《WinDbg 命令三部曲:(一)WinDbg 命令手册》《WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册》《WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册》导航目录 内置帮助…

华为手机的分类有何区别_“鸿蒙”系统能不能玩安卓游戏?如果能,它跟安卓系统有何区别?...

“鸿蒙”系统能不能玩安卓游戏?如果能,它跟安卓系统有何区别?笔者其实挺好奇一件事情,按理来说,华为即将推出“鸿蒙”系统,作为一款真正的国产系统,笔者肯定是要支持的,毕竟我自己使…

200t不稳定_技术革新!将不可能变为可能 这家企业是怎么做到的?

据水泥人网了解,每年的第四季度是整个水泥行业的高峰期,尤其是北方地区各大水泥集团都将会进入错峰停产和检修期,烧成技术改造往往是水泥企业技改过程最为重要的环节,如何做好烧成技术改造成为水泥企业必须要面对的问题。针对目前…

取消计算机触摸板,笔记本电脑触摸板如何打开和关闭

笔记本电脑触摸板怎么打开和关闭?现在用笔记本的用户都越来越多了,现在也有人把笔记本当电视使了。就是电视上看得到用笔记本联网也是能看到,电视看不到的笔记本电脑也能看到。但是笔记本上面有一个触摸板,现相信大家都用过。可是…

QQ显示服务器繁忙2013,在QQ空间发表日志的之后为什么样总是显示“服务器繁忙”?...

据小米方面介绍,小米手机认证空间帐号自2013年5月21日开通以来,框架,8mm加厚钢化玻璃,15mm防火板材质机壳3、在QQ空间发表日志的之后为什么总是显示“服务器繁忙”,发表不了日志?这个难题在我家电脑下终于存…

oracle更改编码

背景:win764bit英文操作系统(支持中文)   oracle11G默认安装   从ZHS16GBK字符集导入数据库表现:plsql显示为乱码解决:1、查看并更改数据库的编码为ZHS16GBK $sqlplus system/oracleSQL> select * from v$nls…