SQL> select * from temp;        TN
----------
         1
         2
         3
         4
         5
         6已选择6行。SQL> select tb.tn,(select sum(tn) c from (select  rownum id,tn from temp) t where t.id<=tb.id)
  2  /tc.sm*100 percent
  3  from (select  rownum id,tn from temp) tb,(select sum(tn) sm from temp) tc;        TN    PERCENT
---------- ----------
         1 4.76190476
         2 14.2857143
         3 28.5714286
         4 47.6190476
         5 71.4285714
         6        100已选择6行。SQL>

解决方案 »

  1.   

    select 金额,sum(金额)over(order by 金额)as sub_sum,(select sum(金额) from table_name) as total_sum1,sum(金额)over(order by 金额)/(select sum(金额) from table_name) as rate  from table_name
      

  2.   

    select 金额,sum(金额)over(order by 金额 rows unbounded preceding )as sub_sum,(select sum(金额) from table_name) as total_sum1,sum(金额)over(order by 金额 rows unbounded preceding)/(select sum(金额) from table_name) as rate  from table_name
    =====================
    select 金额,sum(金额)over(PARTITION BY 金额 order by 金额 rows unbounded preceding )as sub_sum,(select sum(金额) from table_name) as total_sum1,sum(金额)over(PARTITION BY 金额 order by 金额 rows unbounded preceding)/(select sum(金额) from table_name) as rate  from table_name
      

  3.   

    select 金额,trunc(sum(金额) over(order by rownum)/(select sum(金额) from tab)*100,2) "百分比(%)" from tab