WITH t1 AS (
    SELECT
        product_id,
        rank() over(partition by type order by price DESC) rk
        FROM product_info
)
SELECT 
product_id,
product_name,
type,
price
FROM product_info JOIN t1 USING(product_id)
WHERE t1.rk <= 2
ORDER BY price DESC, product_name
LIMIT 3