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