select product_id, product_name, type, price from ( select product_id, product_name, type, price, dense_rank() over (partition by type order by price desc) as rnk from product_info ) t1 where rnk <= 2 order by price desc, product_name limit 3;