SELECT product_name, total_sales, ROW_NUMBER() OVER(PARTITION BY t2.category ORDER BY t1.total_sales DESC) category_rank FROM ( SELECT p.product_id, p.name product_name, SUM(quantity) total_sales FROM orders o, products p WHERE o.product_id = p.product_id GROUP BY p.product_id, p.name ) t1, products t2 WHERE t1.product_id = t2.product_id ORDER BY t2.category, t1.total_sales DESC, t2.product_id