WITH sales AS (
SELECT category
, sub_category
, sum(sales) as sales_sub_category
FROM records
GROUP BY category, sub_category
)
SELECT *
, SUM(sales_sub_category) OVER(PARTITION BY category) as sales_category
, SUM(sales_sub_category) OVER() as sales_total
, sales_sub_category/ SUM(sales_sub_category) OVER(PARTITION BY category) as pct_in_category
, sales_sub_category/ SUM(sales_sub_category) OVER() as pct_in_total
FROM sales
ORDER BY category