oracle 分析函数之 over 用法

 本文转载自: http://blog.csdn.net/mantisxf/article/details/1695441

仅供个人学习提高使用。

 

Oracle 语法之 OVER (PARTITION BY ..)

select * from test

数据:
A B C
1 1 1
1 2 2
1 3 3
2 2 5
3 4 6



---将B列值相同的对应的C 列值加总
select a,b,c, SUM(C) OVER (PARTITION BY B) C_Sum
from test

A B C C_SUM
1 1 1 1
1 2 2 7
2 2 5 7
1 3 3 3
3 4 6 6

PARTITION BY B : 把B列进行分割(本人觉得分割有点类似于分组group by,但不等于分组)

我们先来分析一下 C_SUM 的结果是怎么出来的.

B 列总共有四个值: 1 2 3 4. 第一行的C_SUM值为1, 因为所对应的C列值为1; 第二行的C_SUM值为7. 为什么呢?因为B列中值为2的行总共有两列,所以 SUM(C) 的值为 7 (等于两个C列的相加 2+5 = 7). B列下面的值3 4原理同第一列的值1.




---如果不需要以某个列的值分割,那就要用 null

eg: 就是将C的列值summary 放在每行后面

select a,b,c, SUM(C) OVER (PARTITION BY null) C_Sum
from test

A B C C_SUM
1 1 1 17
1 2 2 17
1 3 3 17
2 2 5 17
3 4 6 17

因为没有分割列,所以C_SUM的值为所有C列的值的和. 17=1+2+3+5+6.

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值