17,086
社区成员
发帖
与我相关
我的任务
分享
select ratio_to_report(SHULIANG) over () zb ,t.* from t
SQL>
SQL> create table test(s varchar(10), v int);
Table created
SQL> begin
2 insert into test values('V','41');
3 insert into test values('C','699');
4 insert into test values('D','19');
5 insert into test values('J','172');
6 end;
7 /
PL/SQL procedure successfully completed
SQL> col v format a10;
SQL> -- 大数据量下,方法二有优势
SQL> select s, v, v * 1.0 / sum(v) over() V1 from test;
S V V1
---------- ---------- ----------
V 41 0.04403866
C 699 0.75080558
D 19 0.02040816
J 172 0.18474758
SQL> select s, v, v * 1.0 / (select sum(v) from test) V2 from test;
S V V2
---------- ---------- ----------
V 41 0.04403866
C 699 0.75080558
D 19 0.02040816
J 172 0.18474758
SQL> drop table test purge;
Table dropped
SQL>