0
点赞
收藏
分享

微信扫一扫

Oracle 语法之 OVER (PARTITION BY ..)

杨沐涵 2023-04-11 阅读 66


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

---如果不需要已某个栏位的值分割,那就要用 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

可以用在求个人工资占部门工资的百分比

SQL> select * from salary;

NAME       DEPT   SAL

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

a               10        2000

b               10        3000

c               10         5000

d               20         4000

SQL> select name,dept,sal,sal*100/sum(sal) over(partition by dept) percent from salary;

NAME       DEPT   SAL    PERCENT

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

a          10             2000         20

b          10             3000         30

c          10             5000         50

d          20             4000        100

举报

相关推荐

0 条评论