WHERE oder HAVING bei mindestens drei Bestellungen?
Lernfragen und Praxis · 1 Antworten
Kleiner Vergleich zum Nachbauen: Kunden mit mindestens drei offenen Bestellungen.
A: WHERE status = 'offen', GROUP BY kunde_id, HAVING COUNT(*) >= 3.
B: Erst alle Bestellungen gruppieren und den Status dann in HAVING prüfen.
An welchem Datensatz sieht man am schnellsten, warum B keine gleichwertige Abkürzung ist?
Antwort auf das Thema
Nimm einen Kunden mit zwei offenen und drei abgeschlossenen Bestellungen. Für deine Frage soll er nicht erscheinen. A zählt nur die zwei offenen. Bei B wäre außerdem unklar, welcher einzelne Status für die gesamte Gruppe gelten soll. Wenn du beides zählen willst, brauchst du eine bedingte Aggregation.