select
SWAP_PROGRAM,
count(DISTINCT TX_GROUP_ID) as num_sawp,
BLOCK_TIMESTAMP::date as day,
count(DISTINCT SWAPPER ) as num_swaper ,
sum(num_sawp) over (partition by SWAP_PROGRAM order by day ) as cum_swaps
from algorand.defi.fact_swap
where day > '2000-01-01'
GROUP by SWAP_PROGRAM , day