Moin!
Und: Normalerweise ist die Gruppierung bei dieser Art der Abfrage vorrangig und Einschränkungen sollten danach per HAVING erfolgen.
Nein, diese generelle Aussage kann ich nicht so stehen lassen.
Es ist auch von der Performance her ein Unterschied.
WHERE definiert, welche Datensätze aus der Tabelle als Grundlage für die Gruppierung überhaupt ausgewählt werden. HAVING definiert, welche fertig gruppierten Resultate in das Abfrageergebnis kommen.
HAVING wird üblicherweise genutzt, um nach der Gruppierung auf die Ergebnisse der Gruppierung zuzugreifen und danach zu filtern.
Es ist daher Unsinn in diesem konkreten Beispiel, das unverändert bleibende Datenfeld "Ort" aus WHERE in HAVING zu verlagern. Das führt nur dazu, dass außer dem gewählten Ort auch alle anderen Orte in die Gruppierungsphase einfließen, und am Ende mit dem HAVING wieder herausgefiltert werden - das bringt keine Ergebnisveränderung unter dem Strich, aber bei großen Tabellen erheblich mehr Rechenaufwand.
- Sven Rautenberg
"Love your nation - respect the others."