欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle sum(col1) over(partition by col2 order by col3):实现分组递增汇总

程序员文章站 2022-03-14 14:26:26
应公司业务要求,需要对数据进行分组汇总做辅助列进行查询 所以使用到了sum(col1) over(partition by col2 order by col3)函数,为了学习与提高在此进行记录。 1、准备数据源 2、插入数据 3、进行查询 查询结果如下图: 这里对DEP_NO进行分组,根据NAME ......

应公司业务要求,需要对数据进行分组汇总做辅助列进行查询

所以使用到了sum(col1) over(partition by col2 order by col3)函数,为了学习与提高在此进行记录。

1、准备数据源

create table test01 (
  name  varchar(20),
  dep_no varchar(10),
  salary  number(20,2)            
);

2、插入数据

insert into test01(name,dep_no,salary) values('张三','0010',12000);
insert into test01(name,dep_no,salary) values('李四','0010',12500);
insert into test01(name,dep_no,salary) values('王五','0020',13000);
insert into test01(name,dep_no,salary) values('赵六','0020',11000);
insert into test01(name,dep_no,salary) values('田七','0020',10000);
insert into test01(name,dep_no,salary) values('如花','0030',8000);
insert into test01(name,dep_no,salary) values('阿卡','0030',9000);
insert into test01(name,dep_no,salary) values('似玉','0030',9500);
insert into test01(name,dep_no,salary) values('撒人','0030',8800);
insert into test01(name,dep_no,salary) values('三忍','0030',6000);
insert into test01(name,dep_no,salary) values('三舞','0030',6600);

3、进行查询

select t.name
             ,t.salary
             ,t.dep_no
             ,sum(t.salary) over(partition by t.dep_no order by t.name)
   from test01 t;

  查询结果如下图:

oracle sum(col1) over(partition by col2 order by col3):实现分组递增汇总  

这里对dep_no进行分组,根据name进行排序,然后统计每组递增汇总结果!