select product_name,total_sales, rank() over(partition by category order by total_sales desc, product_id) category_rank from (select name product_name,sum(quantity) total_sales,category,p.product_id from products p inner join orders o on p.product_id=o.product_id group by name,p.product_id,category order by category,total_sales desc) t ; 就是最后测试的时候要把有null的部分去掉,其实SUM会过滤掉null的,主要是inner join使其不要出现了

京公网安备 11010502036488号