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