数据如下,
create table TEST
(
EMPNO NUMBER(4),
ENAME VARCHAR2(10),
SAL NUMBER(7,2),
BONUS NUMBER
);
insert into test(empno,ename,sal,bonus) values(7934,'MILLER',1300,130);
insert into test(empno,ename,sal,bonus) values(7934,'MILLER',1300,260);
insert into test(empno,ename,sal,bonus) values(7839,'KING',5000,1500);
insert into test(empno,ename,sal,bonus) values(7782,'CLARK',2450,245);
---------------------------------------------------------------------------------------------------------------------------------------
用group 对empno做合计
select empno,ename,sum(bonus) fromtest
group by empno,ename
结果如下:
1 7839 KING 1500
2 7782 CLARK 245
3 7934 MILLER 390
如果改用 sum( ) over
select empno,ename,sum(bonus) over (partition by empno) sal2
from test
结果如下:
1 7782 CLARK 245
2 7839 KING 1500
3 7934 MILLER 390
4 7934 MILLER 390
这样结果会有重复记录,需要加上 distinct 才行,感觉就是在数据基础上对列进行了合计
想请教一下,分析函数的执行原理,为什么这条数据需要distinct ,谢谢!
|