Процент от накопительной суммы

alexandrov.yaroslav
Дата: 10.03.2011 12:22:42
Всем доброго времен суток!

Есть табличка с накопительной (кумулятивной )суммой по дням

ondate summ
----------- |-------------
01/02/2011 | 145127.6737
02/02/2011 | 873002.2385
03/02/2011 | 1418453.1719
04/02/2011 | 1988347.307
05/02/2011 | 2219930.3888
........................................
28/02/2011 | 11738700.3912

Так вот ,нужно добавить третий столбик, в котором вычисляется процент(доля) суммы от общей суммы за месяц, то есть в конце должно получиться 100%
Пробовал так:
select 
ondate,cumul_sum_real, 
round(cumul_sum_real*100/sum(cumul_sum_real)over (),2) proc 
from ya_prod_report_common
where             korr_ch = 23
            and ondate >= to_date('01.02.2011','dd.mm.yyyy')
             and ondate < to_date('01.03.2011','dd.mm.yyyy')
            order by ondate
Не особо получается. Последнее значение 6,81 а надо 100%
AlexFF__|
Дата: 10.03.2011 12:25:54
alexandrov.yaroslav,
sum->max
AmKad
Дата: 10.03.2011 12:31:53
alexandrov.yaroslav,

with s as
(select trunc(sysdate, 'year') + level - 1 dt, power(level, 2) sm from dual connect by level <= 10
)
select dt, sm, 
sum(sm) over (order by dt) f1, 
round(ratio_to_report(sm) over (partition by trunc(dt, 'month')), 2) f2,
round(sum(sm) over (order by dt) / sum(sm) over(), 2) f3
from s
AmKad
Дата: 10.03.2011 12:36:07
AmKad,

with s as
(select trunc(sysdate, 'year') + level - 1 dt, power(level, 2) sm from dual connect by level <= 10
)
select dt, sm, 
sum(sm) over (partition by trunc(dt, 'month') order by dt) f1, 
round(ratio_to_report(sm) over (partition by trunc(dt, 'month')), 2) f2,
round(sum(sm) over (partition by trunc(dt, 'month') order by dt) / sum(sm) over(partition by trunc(dt, 'month')), 2) f3
from s;
alexandrov.yaroslav
Дата: 10.03.2011 12:36:18
AmKad,

Спасибо, 3й вариант подошел
AlexFF__|
Дата: 10.03.2011 12:40:49
alexandrov.yaroslav
AmKad,

Спасибо, 3й вариант подошел

Если своя голова не работает, то тебе все подойдет ;)