题解 | 商品价格排名
商品价格排名
https://www.nowcoder.com/practice/119f5b8cfe5b45779a3e1b3f4d83b341
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 ) a WHERE rk <3 ORDER BY price DESC, product_name LIMIT 3;
注:
- 两重排序,先在每类产品中取价格最高的两个,然后从取出的产品中取价格最高的前三个;
- 分组排序用窗口函数,不分组用“ORDER BY + LIMIT”;