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