select * from ( select the_year, vendor_id, amount, row_number() over( partition by the_year order by amount desc ) as rn from ( select date_trunc('year', the_date) as the_year, vendor_id, sum(amount) as amount from ap group by 1, 2 ) s ) s where rn <= 10 order by the_year, amount desc
source share