Tested on QGIS 2.18 and QGIS 3.4
I can suggest using a
"Virtual Layer" through
Layer > Add Layer > Add/Edit Virtual Layer...
Let's assume we have 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.geometry, c.id, c.Name,
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_%'.
P.S. mind the CRS