WITH category_total AS(
    select
        category,
        sum(quantity*price) AS category_total_sum
    FROM sales
    JOIN products USING(product_id)
    JOIN customer_info USING(sale_id)
    GROUP BY category
),
sub AS(
    select
        category,
        age_group,
        sum(quantity*price) AS total_sales_amount
    FROM sales
    JOIN products USING(product_id)
    JOIN customer_info USING(sale_id)
    GROUP BY category, age_group
)
SELECT
    category AS product_category,
    age_group,
    total_sales_amount,
    ROUND(total_sales_amount/category_total_sum, 2) AS purchase_percentage
FROM category_total JOIN sub USING(category)
ORDER BY product_category, age_group;