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
) p
WHERE
rk <= 2
ORDER BY
price DESC,
product_name
LIMIT 3
- 按名称进行排序,没说升序降序就不用写DESC或ASC
- 无法在 GROUP BY 后再“排序组内记录”,如果要在分组内排序只能用窗口函数ROW_NUMBER()/RANK() OVER(PARTITION BY ... ORDER BY ...)
- 窗口函数中排出的rk只能在子查询以外的where中进行调用,对子查询的结果进行过滤,不能在同一个子查询内使用
- 子查询的表一定要给名字

京公网安备 11010502036488号