Oracle-分析函数之sum(...) over(...)
来源:互联网 发布:me452ch a是什么网络 编辑:程序博客网 时间:2024/06/13 05:43
概述
Oracle函数 很久之前更新了一篇Oracle的函数博文
http://blog.csdn.net/yangshangwei/article/details/51425458,分析函数并没有包括,这里作为单独的开篇来介绍一下 分析函数
ORACLE函数系列:
Oracle常见函数大全
Oracle-分析函数之连续求和sum(…) over(…)
Oracle-分析函数之排序值rank()和dense_rank()
Oracle-分析函数之排序后顺序号row_number()
Oracle-分析函数之取上下行数据lag()和lead()
分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值。
分析函数和聚合函数的区别
普通的聚合函数用group by分组,每个分组返回一个统计值,
分析函数采用partition by分组,并且每组每行都可以返回一个统计值。
语法
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
PARTITION子句 ORDER BY子句 WINDOWING子句 缺省时相当于RANGE UNBOUNDED PRECEDING
分析函数带有一个开窗函数over(),包含三个分析子句:
- 分组(partition by)
- 排序(order by)
- 窗口(rows)
连续求和分析函数 sum(…) over(…)
sum(…) over …
【功能】连续求和分析函数
【参数】具体参示例
【说明】Oracle分析函数
NC示例:
- 1
- 1
【示例】
原表信息
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
规则
sum(…) over( ),对所有行求和
sum(…) over( order by … ), 连续求和
sum(…) over( partition by… ),同组内所行求和
sum(…) over( partition by… order by … ),同第1点中的排序求和原理,只是范围限制在组内
使用 sum(sal) over (order by ename)… 查询员工的薪水“连续”求和,
先来一个简单的,注意over(…)条件的不同,
使用 sum(sal) over (order by ename)… 查询员工的薪水“连续”求和,
注意over (order by ename)如果没有order by 子句,求和就不是“连续”的.
放在一起,体会一下不同之处:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
使用子分区查出各部门薪水连续的总和。注意按部门分区。注意over(…)条件的不同
sum(sal) over (partition by deptno order by ename) 按部门“连续”求总和
sum(sal) over (partition by deptno) 按部门求总和
sum(sal) over (order by deptno,ename) 不按部门“连续”求总和
sum(sal) over () 不按部门,求所有员工总和,效果等同于sum(sal)。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
求和规则有按部门分区的,有不分区的例子
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
来一个逆序的,即部门从大到小排列,部门里各员工的薪水从高到低排列,累计和的规则不变。
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
由于两个相同的值都是第一,所以累加时是两个第一相加
总结
在”… from emp;”后面不要加order by 子句,使用的分析函数的(partition by deptno order by sal)
里已经有排序的语句了,如果再在句尾添加排序子句,一致倒罢了,不一致,结果就令人费劲了
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- Oracle-分析函数之sum(...) over(...)
- Oracle-分析函数之sum(...) over(...)
- ORACLE SUM over分析函数
- Oracle 分析函数之over()
- oracle分析函数之over()
- Oracle之over分析函数
- SUM() over()分析函数
- oracle累积求和分析函数sum over的使用
- oracle 分析函数之 over 用法
- Oracle开发专题之:分析函数(OVER)
- Oracle开发专题之:分析函数(OVER)
- Oracle开发专题之:分析函数(OVER)
- Oracle开发专题之:分析函数(OVER)
- oracle 分析函数之 over 用法
- Oracle开发专题之:分析函数(OVER)
- Oracle分析函数over之二
- Oracle开发专题之:分析函数(OVER)
- sum()over()和count()over()分析函数
- 文件编码格式ANSI转UTF8
- RecyclerView简单使用总结
- 比较二棵二叉排序树是否相等
- JDK1.6在SUSE11下问题跳变定时任务失效问题记录
- 51nod 1056 最长等差数列 V2
- Oracle-分析函数之sum(...) over(...)
- poj 3484 Showstopper(二分)
- iOS自定义摄像机或者拍照
- Couldn't run /usr/bin/dumpcap in child process:权限不够
- python中的os.path.join() 作用
- Anbox让你在Linux上“原生运行”Android应用
- Python进阶(三十五)-Fiddler命令行和HTTP断点调试
- android中常用的弹出提示框
- 基于deepinlinux的manjarolinux 多了不少好用的软件