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

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