with t as ( select category ,sum(quantity * price) category_total_sales from sales s join products p on s.product_id = p.product_id group by category ) select p.category product_category ,age_group ,sum(quantity * price) total_sales_amount ,round(sum(quantity * price) / category_total_sales, 2) purchase_percentage from sales s join products p on s.product_id = p.product_id join customer_info c on s.sale_id = c.sale_id join t on p.category = t.category group by product_category, age_group order by product_category