In QGIS I can suggest using a "Virtual Layer" through Layer > Add Layer > Add/Edit Virtual Layer...
.
Let's assume there are ten features in 'multiple_polygons' (yellow), and three in 'catchment_zones' (grey) accordingly, see image below.

With the following Query, it is possible to achieve the result
SELECT
c.id,
c.Name,
c.geometry,
ROUND(st_area(c.geometry), 2) AS "catch_area(m*m)",
ROUND(SUM(st_area(m.geometry)), 2) AS "mult_area(m*m)",
COUNT(m.geometry) AS "num_mult",
ROUND(SUM(st_area(m.geometry))/st_area(c.geometry)*100, 2) AS "area_%"
FROM
"catchment_zones" AS c
JOIN
"multiple_polygons" AS m
ON st_intersects(c.geometry, m.geometry)
GROUP BY
c.id
The output Virtual Layer will maintain the original geometry and some initial attributes including several new, namely "catch_area(mxm)"
(in square meters), "mult_area(mxm)"
(in square meters), "num_mult"
and "area_%"
.
