with t as ( select product_id, product_name, sum(total_amount) as q2_2024_sales_total, category from order_info join product_info using(product_id) where order_date between '2024-04-01' and '2024-06-30' group by product_id, product_name ) select product_id, product_name, case when q2_2024_sales_total is null then 0 else q2_2024_sales_total end as q2_2024_sales_total, rank() over ( partition by category order by q2_2024_sales_total DESC ) as category_rank, supplier_name from product_info join supplier_info using(product_id) left join t using (product_id, product_name, category) order by product_id