Menu
Coddy logo textTech

Grouping Part 2

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

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

SELECT * FROM table1
WHERE col1 > col2

Das col1 > col2 wird für jeden Datensatz ausgeführt und prüft, ob es 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 nach der Aggregatbedingung.

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

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

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

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

Dies geht zuerst Datensatz für Datensatz durch und filtert alle Datensätze, bei denen price größer als 25 ist, und erst danach führt es die GROUP BY-Klausel aus und filtert jede category, bei der der durchschnittliche price größer als 40 ist.

challenge icon

Aufgabe

Mittel

Verfügbare Tabellen und Spalten:

  • <strong>earthquakes</strong>: <strong>location</strong>, <strong>amplitude</strong>, <strong>period</strong>

Die Richterskala ist eine Logarithmische Skala zur Messung der Stärke von Erdbeben.

Wir müssen die durchschnittliche Stärke für jeden Standort aller Hauptbeben zurückgeben.

Ein Hauptbeben ist wie folgt definiert:

  • Die Amplitude (amplitude) ist größer oder gleich 1
  • Die Periode der Wellen (period) ist größer oder gleich 1 Minute

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

Geben Sie die location und die durchschnittliche Stärke für jeden Standort zurück, wobei nur die Hauptbeben berücksichtigt werden sollen (benennen Sie die Spalte avg_magnitude). Schließen Sie in Ihr Ergebnis nur die Standorte ein, bei denen avg_magnitude größer als 1 ist.

Runden Sie die Ergebnisse auf 2 Dezimalstellen mit ROUND.

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