oracle中累计求和_oracle累积求和分析函数sum over的使用

oracle sum()over函数的使用

over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。

over函数的参数:over(partition by columnname1 order by columnname2)

含义,按columname1指定的字段进行分组排序,或者说按字段columnname1的值进行分组排序。

例如:employees表中,有两个部门的记录:department_id =10和20

select department_id,rank() over(partition by department_id order by salary) from employees   www.2cto.com

就是指在部门10中进行薪水的排名,在部门20中进行薪水排名。

如果是partition by org_id,则是在整个公司内进行排名。

-------------------------------

sum(...) over ... 的使用

根据over(...)条件的不同

使用 sum(sal) over (order by ename)... 查询员工的薪水“连续”求和;

注意over (order by ename)如果没有order by 子句,求和就不是“连续”的,

把所有的值加到一起作为一个值。体会一下不同之处:

SQL> select deptno,ename,sal,

2 sum(sal) over (order by ename) 连续求和,

3 sum(sal) over () 总和, -- 此处sum(sal) over () 等同于sum(sal)

4 100*round(sal/sum(sal) over (),4) "份额(%)"

5 from emp

6 /   www.2cto.com

DEPTNO ENAME             SAL   连续求和       总和    份额(%)

---------- ---------- ---------- ---------- ---------- ----------

20 ADAMS            1100       1100      29025       3.79

30 ALLEN            1600       2700      29025       5.51

30 BLAKE            2850       5550      29025       9.82

10 CLARK            2450       8000      29025       8.44

20 FORD             3000      11000      29025      10.34

30 JAMES             950      11950      29025       3.27

20 JONES            2975      14925      29025      10.25

10 KING             5000      19925      29025      17.23

30 MARTIN           1250      21175      29025       4.31

10 MILLER           1300      22475      29025       4.48

20 SCOTT            3000      25475      29025      10.34

20 SMITH             800      26275      29025       2.76

30 TURNER           1500      27775      29025       5.17

30 WARD             1250      29025      29025       4.31

使用子分区查出各部门薪水连续的总和。注意按部门分区。注意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)。

SQL> select deptno,ename,sal,

2 sum(sal) over (partition by deptno order by ename) 部门连续求和,--各部门的薪水"连续"求和   www.2cto.com

3 sum(sal) over (partition by deptno) 部门总和, -- 部门统计的总和,同一部门总和不变

4 100*round(sal/sum(sal) over (partition by deptno),4) "部门份额(%)",

5 sum(sal) over (order by deptno,ename) 连续求和, --所有部门的薪水"连续"求和

6 sum(sal) over () 总和, -- 此处sum(sal) over () 等同于sum(sal),所有员工的薪水总和

7 100*round(sal/sum(sal) over (),4) "总份额(%)"

8 from emp

9 /

利用Oracle内置分析函数进行高效统计汇总

分析函数是Oracle从8.1.6开始引入的一个新的概念,为我们分析数据提供了一种简单高效的处理方式.在分析函数出现以前,我们必须使用自联查询,子查询或者内联视图,甚至复杂的存储过程实现的语句,现 ...

SQL Cumulative Sum累积求和

期望结果:  ID  VAL  CumSum  1  10  10  2  20  30  3  30  60 方法一: 使用分析函数 select id,val,sum(val) over ( or ...

Oracle分析函数 — sum, rollup, cube, grouping用法

本文通过例子展示sum, rollup, cube, grouping的用法. //首先建score表 create table score( class  nvarchar2(20), course ...

Oracle 中的分析函数

Oracle常用分析函数介绍(排名函数+窗口函数) 2014年11月30日 ⁄ 数据库 ⁄ 共 3903字 ⁄ 暂无评论 ⁄ 阅读 7,772 次 评级函数 常见评级函数如下: RANK():返回数据 ...

Oracle聚合求和和聚合求积(顺便解决BOM展开的问题)

本文参考网址:http://www.itpub.net/thread-1020772-1-1.html 我们在日常的工作中,经常遇到了针对某一列的值,进行求和,求平均值,在一些特殊的业务场景下,我们需 ...

oracle进阶之分析函数

本博客是自己在学习和工作途中的积累与总结,纯属经验之谈,仅供自己参考,也欢迎大家转载,转载时请注明出处. http://www.cnblogs.com/king-xg/p/6797119.html 分 ...

【Oracle】oracle之listagg分析函数

oracle分析函数——listagg篇 (1)使用listagg将多行数据合并到一行 例表: select deptno, ename from emp order by deptno, ename ...

oracle累计求和

//将当前行某列的值与前面所有行的此列值相加,即累计求和: //方法一: with t as(      select 1 val from dual union all      select 3 ...

编写一个求和函数sum,使输入sum(2)(3)或输入sum(2,3),输出结果都为5

昨天的笔试题,做的一塌糊涂,题目考的都很基础而且很细,手写代码对我来说是硬伤啊.其中有一道是这个,然而看到题目的时候,根本没有想到arguments:然后现在就恶补一下. arguments:用在函数 ...

随机推荐

MzBlog分析

早上衣明志 在QQ群里说他的博客开源了,地址在 https://github.com/qihangnet/MZBlog,基于NancyFX和MongoDB开发的.博客内容需要使用 MarkDown 进 ...

linux内核中send与recv函数详解

Linux send与recv函数详解 1.简介 #include ssize_t recv(int sockfd, void *buff, size_t n ...

Node与apidoc的邂逅——NodeJS Restful 的API文档生成

作为后台根据需求文档开发完成接口后,交付给前台(angular vue等)做开发,不可能让前台每个接口调用都去查看你的后台代码一点点查找.前台开发若不懂你的代码呢?让他一个接口一个接口去问你怎么调用, ...

[LeetCode] Squirrel Simulation 松鼠模拟

There's a tree, a squirrel, and several nuts. Positions are represented by the cells in a 2D grid. Y ...

c语言中printf("%x",-1);为什么会输出-1的十六进制补码??

计算机存储的时候是以补码的形式存进去的,输出来在以你原码的形式输出(这个形式就是你设置的形式)! 比如: -1 (32位模式) 存: 1 000000000000000000000000000000 ...

复习 HTML

1.:加粗 :斜体 :文字下划线 :文字删除线 ...

《Enhanced LSTM for Natural Language Inference》(自然语言推理)

解决的问题 自然语言推理,判断a是否可以推理出b.简单讲就是判断2个句子ab是否有相同的含义. 方法 我们的自然语言推理网络由以下部分组成:输入编码(Input Encoding ),局部推理模型(L ...

PyCharm安装与配置,python的Hello World

1. 访问https://www.jetbrains.com/zh/pycharm/download/download-thanks.html, 下载pycharm 安 装包,点击安装. 2. 用记事 ...

[T-ARA][나 어떡해/1977 기억 안나][我怎么办/1977我不记得了]

歌词来源: 我怎么办:https://music.163.com/#/song?id=28111191 1977我不记得了:https://music.163.com/#/song?id=281111 ...

【线段树求区间第一个不大于val的值】Lpl and Energy-saving Lamps

https://nanti.jisuanke.com/t/30996 线段树维护区间最小值,查询的时候优先向左走,如果左边已经找到了,就不用再往右了. 一个房间装满则把权值标记为INF,模拟一遍,注意 ...

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值