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 > col2Das 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 categoryDas 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) > 40Dadurch 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) > 40Dies 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.
Aufgabe
MittelVerfü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
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns