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;