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 rk
        FROM
            product_info
    ) AS a
WHERE
    rk <= 2
ORDER BY
    price DESC,
    product_name ASC
LIMIT
    3

此题ez,先通过ROW_NUMBER窗口函数进行分组排序选出每个类别中排名前二的,再通过ORDER BY排序后使用LIMIT限制输出前三位就好了