Mean of polygons area within another polygon layer

Try this expression on your Sectors layer's attribute table:

aggregate(layer := 'Houses', 
          aggregate:= 'mean', 
          expression:= "area", 
          filter:= within(centroid($geometry), geometry(@parent)))

A quick test output ("ave" field) below:

enter image description here


You can calculate the mean area of houses using the Field Calculator to create a new field in the Sectors layer.

Use this expression


(to_string(array_sum(aggregate(
 layer:= 'Houses',
 aggregate:='array_agg',
 expression:=$area,
 filter:=contains(geometry(@parent), $geometry)))))
  /
(aggregate(
layer:='Houses', 
aggregate:='count', 
expression:=$id, 
filter:=intersects(geometry(@parent), ($geometry))))

The first part of the expression calculates the sum of all the Houses areas inside each sector. The second part calculates the number of Houses inside the sector. A simple division of the first number by the second will give you the request information