Menu
Coddy logo textTech

Gruppierung Teil 2

Teil des Abschnitts Grundlagen der SQL-Journey von Coddy. Lektion 37 von 72.

Das Schlüsselwort WHERE führt eine Bedingung für jeden Datensatz einzeln aus. Zum Beispiel:

SELECT * FROM table1
WHERE col1 > col2

col1 > col2 wird für jeden Datensatz ausgeführt und prüft, ob die Bedingung erfüllt ist.

Aber was ist, wenn wir aggregierte Ergebnisse filtern möchten? Zum Beispiel:

SELECT category, AVG(price) FROM table1
WHERE AVG(price) > 40
GROUP BY category

Das wird nicht funktionieren, weil WHERE keine Aggregationen prüfen kann. Dafür gibt es das Schlüsselwort HAVING. Es filtert Daten anhand der Aggregatbedingung.

SELECT category, AVG(price) FROM table1
GROUP BY category
HAVING AVG(price) > 40

Dadurch werden alle Kategorien gefiltert, deren Durchschnittspreis größer als 40 ist.

Wenn wir die HAVING- und WHERE-Klauseln kombinieren möchten, schreiben wir:

SELECT category, AVG(price) FROM table1
WHERE price > 25
GROUP BY category
HAVING AVG(price) > 40

Dies wird zunächst Datensatz für Datensatz durchgehen und alle Datensätze herausfiltern, für die price größer als 25 ist, und erst danach die GROUP BY-Klausel ausführen und jede category herausfiltern, für die der Durchschnitt von price größer als 40 ist.

challenge icon

Aufgabe

Mittel

Verfügbare Tabellen und Spalten:

  • earthquakes: location, amplitude, period

Die Richterskala ist eine logarithmische Skala, die zur Messung der Magnitude von Erdbeben verwendet wird.

Wir müssen die durchschnittliche Magnitude für jeden Ort aller schweren Erdbeben zurückgeben.

Ein schweres Erdbeben ist definiert als:

  • Die Amplitude ist größer oder gleich 1.
  • Die Periodendauer der Wellen ist größer oder gleich 1 Minute.

Für diese Aufgabe verwenden wir eine andere Formel: M = (A/T)<sup>2</sup> / T, die äquivalent zu M = ((A/T)*(A/T)) / T ist.

Gib den Ort und die durchschnittliche Magnitude jedes Ortes zurück und berücksichtige dabei nur die schweren Erdbeben (benenne die Spalte avg_magnitude). Nimm in dein Ergebnis nur die Orte auf, an denen avg_magnitude größer als 1 ist.

Runde die Ergebnisse auf 2 Dezimalstellen.

Probier es selbst

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen

Übe selbstständig: SQL-Playground