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;