--\timing --explain (analyze, buffers) WITH base AS ( SELECT order_season ,order_month ,version ,iter ,part_descr ,bill_cust_descr ,ship_cust_descr ,SUM(units) units ,SUM(value_usd) value_usd FROM rlarp.osm_fcpool WHERE quota_rep_descr = '90005 - MARK WILKINSON' AND segm = 'Retail' AND mod_chan = 'MASS' AND order_month = 'May' GROUP BY order_season ,order_month ,version ,iter ,part_descr ,bill_cust_descr ,ship_cust_descr ) ,months AS ( SELECT order_season ,version ,iter ,order_month ,sum(units) units ,sum(value_usd) value_usd FROM base GROUP BY order_season ,version ,iter ,order_month ) ,totals AS ( SELECT order_season ,version ,iter ,sum(units) units ,sum(value_usd) value_usd FROM months GROUP BY order_season ,version ,iter ) SELECT jsonb_build_object( 'months' ,(SELECT jsonb_agg(row_to_json(months)::jsonb) FROM months) ) ,jsonb_build_object( 'base' ,(SELECT jsonb_agg(row_to_json(base)::jsonb) FROM base) ) ,jsonb_build_object( 'totals' ,(SELECT jsonb_agg(row_to_json(totals)::jsonb) FROM totals) )