with t as(select product_id, product_name, type, price, dense_rank() over(PARTITION by type order by price desc) as rk from product_info) select product_id, product_name, type, price from t where rk <= 2 order by price desc, product_name limit 3
with t as(select product_id, product_name, type, price, dense_rank() over(PARTITION by type order by price desc) as rk from product_info) select product_id, product_name, type, price from t where rk <= 2 order by price desc, product_name limit 3