select product_id,product_name,type,price from ( select product_id,product_name,type,price, rank()over(partition by type order by price desc) rk from product_info ) t1 where t1.rk = 1 or t1.rk = 2 order by price desc,product_id limit 3