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 > col2col1 > 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 categoryDas wird nicht funktionieren, weil WHERE keine Aggregationen überprüfen kann. Dafür haben wir 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 herausgefiltert, deren Durchschnittspreis größer als 40 ist.
Wenn wir die HAVING- und WHERE-Klausel kombinieren möchten, schreiben wir:
SELECT category, AVG(price) FROM table1
WHERE price > 25
GROUP BY category
HAVING AVG(price) > 40Zuerst wird Datensatz für Datensatz vorgegangen und alle Datensätze gefiltert, bei denen der Preis größer als 25 ist, und erst danach wird die GROUP BY-Klausel ausgeführt und jede Kategorie gefiltert, deren Durchschnittspreis größer als 40 ist.
Aufgabe
MittelVerfü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 für jeden Ort die durchschnittliche Magnitude aller schweren Erdbeben zurückgeben.
Ein schweres Erdbeben ist definiert als:
- Die Amplitude ist größer oder gleich 1.
- Die Periode der Wellen ist größer oder gleich 1 Minute.
Für diese Herausforderung verwenden wir eine andere Formel: M = (A/T)^2 / T, die äquivalent zu M = ((A/T)*(A/T)) / T ist. Hier ist M die Magnitude, A die Spalte amplitude und T die Spalte period.
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, bei denen avg_magnitude größer als 1 ist.
Runde die Ergebnisse auf 2 Dezimalstellen.
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
4Weitere Schlüsselwörter
Das IN-SchlüsselwortDas BETWEEN-SchlüsselwortDas LIKE-SchlüsselwortDas AS-SchlüsselwortRückblick – Handymodelle7Datumsangaben
Datumsangaben behandeln – Teil 1Datumsangaben behandeln – Teil 2Datumsangaben behandeln – Teil 32Bedingungen
Grundlagen der BedingungenDas Schlüsselwort ANDDas Schlüsselwort ORDas Schlüsselwort NOTMehrere kombinierte BedingungenKlammernBoolesche Werte5Arithmetische Operationen
Mathematische OperatorenMathematische SpaltenDie Modulo-OperationDie ROUND()-Funktion3Spezifisches Rückgabeformat
NULL-WerteErgebnisse sortieren Teil 1Ergebnisse sortieren Teil 2Zusammenfassung - Cyber Security FirmAnzahl der Datensätze begrenzenZusammenfassung - Vehicle Factory6Einführungsaufgaben
Wiederholung – ParlamentswahlWiederholung – Festnahme eines Straftäters durch die PolizeiWiederholung – Getränkebehälter an der BarWiederholung – Neue Spalten erstellenÜbe selbstständig: SQL-Playground