Zwei Probleme:
- Wie die Fehlermeldung sagt, muss Geom in eine Aggregatfunktion eingeschlossen werden, wenn es nicht in
GROUP BY
aufgeführt ist . Sie könnten einfachmin()
verwenden ... - Du hast deine Logik auf den Kopf gestellt. Es muss
COUNT(*) = 1 OR ..
sein
Dies lässt sich aber eleganter mit einem Anti-Semi-Join mit NOT EXISTS
:
SELECT s.name, s.admin, st_area(geom)
FROM vector.states s
WHERE st_area(s.geom) > 0.01 -- state big enough ...
OR NOT EXISTS ( -- ... or there are no other counties
SELECT 1 FROM vector.states s2
WHERE s2.admin = s.admin
AND s2.pk_column <> s.pk_column -- exclude self-join
)
ORDER BY s.admin;
Ersetzen Sie pk_column
mit Ihrer/Ihren tatsächlichen Primärschlüsselspalte(n).