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限制输出前三位就好了

京公网安备 11010502036488号