Aggregierte Zeilen filtern
Mit der group by
-Klausel können wir aggregierte Werte (Summen, Durchschnitte etc.) für Gruppen berechnen. Was aber, wenn wir im Ergebnis nicht alle Gruppen sehen wollen, sondern nur die, die einem gewissen Kriterium entsprechen? Hier können wir leider nicht mit der where
-Klausel arbeiten, weil die sich nur auf einzelne Zeilen vor der Gruppierung bezieht. Für gruppierte Daten gibt es deshalb die having
-Klausel:
Als Ergebnis der obigen Abfrage bekommen wir nur noch Events, deren durchschnittliche Talk-Länge mindestens 20 Minuten beträgt. Als Kontrast dazu: würden wir mit der where
-Klausel auf der Spalte duration
filtern bekämen wir nicht den gewünschten Effekt:
Wir würden so auf Zeilenebene bereits alle TED-Talks filtern, die kürzer als 20 Minuten sind und diese aus der Durchschnittsberechnung ausschließen. Im Ergebnis können aber trotzdem Events mit einer durchschnittlichen Länge von kleiner 20 Minuten enthalten sein.
Last updated
Was this helpful?