with result_tbl as (
select lb.asset_name,sw.swap_program, count(DISTINCT sw.tx_group_id) as swapped_count
from algorand.swaps sw
join algorand.account_asset lb on lb.asset_id = sw.swap_to_asset_id
where date(block_timestamp) >= '2022-01-01'
and sw.swap_from_amount > 0
and swap_program = 'wagmiswap'
group by lb.asset_name, sw.swap_program
order by swapped_count DESC
)
select * from (
select asset_name, row_number() over (partition by swap_program order by swapped_count desc) as rank, swap_program, concat(rank,' - ', swap_program) as dex_rank, swapped_count
from result_tbl) ranks
where rank <= 5
Order by rank, swap_program