select t1.product_id, t1.product_name, t1.type, t1.price from (select product_id, product_name, type, price, rank() over(partition by type order by price desc) as ranking----核心是用rank而非row_number from product_info ) t1 where t1.ranking<=2 order by t1.price desc,t1.product_name limit 3