Why don't you try:
SELECT DISTINCT
ST_Buffer(ST_Centroid(ST_Transform(sg.geometry, 31467),
ST_Area(ST_Transform(sg.geometry, 31467)))
FROM building b LEFT JOIN surface_geometry sg ON (b.id = sg.cityobject_id)
WHERE ST_Area(ST_Transform(sg.geometry, 31467)) < 100;
It is also possible that this might work:
SELECT DISTINCT
ST_Buffer(ST_Centroid(geom), ST_Area(geom))
FROM building b LEFT JOIN surface_geometry sg ON (b.id = sg.cityobject_id) INNER JOIN
ST_Transform(surface_geometry.geometry, 31467) geom ON (ST_Area(geom) < 100);
You might want to check the placement (), because at the moment I have nowhere to check it.
source
share