add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
create table t as
select date '2021-01-01' as dte, 1 as value from dual union all
select date '2021-01-02' as dte, 1 as value from dual union all
select date '2021-01-05' as dte, 1 as value from dual union all
select date '2021-01-07' as dte, 1 as value from dual union all
select date '2021-01-10' as dte, 1 as value from dual union all
select date '2021-01-12' as dte, 1 as value from dual union all
select date '2021-01-13' as dte, 1 as value from dual union all
select date '2021-01-16' as dte, 1 as value from dual union all
select date '2021-01-18' as dte, 1 as value from dual union all
select date '2021-01-22' as dte, 1 as value from dual union all
select date '2021-01-23' as dte, 1 as value from dual union all
select date '2021-01-30' as dte, 1 as value from dual
12 rows affected
with tt as (
select dte, value, row_number() over (order by dte) as seqnum
from t
),
cte (dte, value, seqnum, firstdte) as (
select tt.dte, tt.value, tt.seqnum, tt.dte
from tt
where seqnum = 1
union all
select tt.dte, tt.value, tt.seqnum,
(case when tt.dte < cte.firstdte + interval '7' day then cte.firstdte else tt.dte end)
from cte join
tt
on tt.seqnum = cte.seqnum + 1
)
select firstdte, sum(value)
from cte
group by firstdte
order by firstdte

FIRSTDTE SUM(VALUE)
01-JAN-21 4
10-JAN-21 4
18-JAN-21 3
30-JAN-21 1