HAVING-Klausel
Das Schulverwaltungssystem wird überprüft, um Datenkonsistenz und Genauigkeit sicherzustellen. Im Rahmen dieser Überprüfung wurde eine neue Datenanalyseaufgabe zugewiesen.
Bei routinemäßigen Kontrollen wurde festgestellt, dass einige Schülerdatensätze mehr als einen Noteneintrag enthalten, obwohl das System so konzipiert ist, dass pro Schüler nur eine Note gespeichert wird.
Ihre Aufgabe ist es, solche Fälle zur weiteren internen Überprüfung zu identifizieren.
Überlegen wir gemeinsam, wie wir dies erreichen können. Man könnte zunächst in Betracht ziehen, dies mit einer WHERE-Klausel zu versuchen. Das könnte folgendermaßen aussehen:
123SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
Wie Sie sehen, erhalten wir eine Fehlermeldung, die darauf hinweist, dass Aggregatfunktionen nicht innerhalb einer WHERE-Klausel verwendet werden können. Hier kommt die HAVING-Klausel zum Einsatz.
Angenommen, es sollen die Abteilungen ermittelt werden, in denen das durchschnittliche Gehalt der Mitarbeiter unter 70.000 $ pro Jahr liegt.
Um dies zu erreichen, muss eine Aggregatfunktion zusammen mit der HAVING-Klausel verwendet werden:
1234SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
Wir haben eine Abteilung als Antwort mit der HAVING-Klausel erhalten, bei der wir eine Bedingung für die Spalte festgelegt haben, nach der wir die Daten gruppiert haben.
Um Datenaggregation innerhalb der HAVING-Klausel zu verwenden, muss eine Gruppierung der Daten in der Abfrage vorhanden sein. Wie in der obigen Abfrage haben wir die Daten nach der Spalte department gruppiert.
Sehen wir uns die allgemeinere Syntax der HAVING-Klausel an und wann deren Einsatz am sinnvollsten ist:
SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)
Lassen Sie uns auch kurz den Hauptunterschied zwischen den Klauseln WHERE und HAVING sowie deren jeweilige Anwendungsbereiche verstehen:
- Die
WHERE-Klausel wird vor der Datenaggregation verwendet, während dieHAVING-Klausel nach der Datenaggregation eingesetzt wird; - Die
WHERE-Klausel steht vorGROUP BY, während dieHAVING-Klausel nachGROUP BYgeschrieben wird.
Dies sind die zwei wichtigsten Unterschiede, die Sie sich für die erfolgreiche Anwendung der HAVING-Klausel merken sollten. Kehren wir nun zur von der Schule gestellten Aufgabe zurück.
Swipe to start coding
Einige Studierende erscheinen mehrfach in den Notenaufzeichnungen, was auf doppelte oder unerwartete Einträge im System hinweist.
Sie müssen die Nachnamen aller Studierenden abrufen, deren Datensätze mehr als einen Noteneintrag enthalten. Das Ergebnis wird von der Schulverwaltung verwendet, um die Daten bei Bedarf zu überprüfen und zu korrigieren.
Geben Sie nur die Liste der Nachnamen zurück, die diese Bedingung erfüllen, alphabetisch sortiert.
Kurzanleitung
- Abruf der Spalte
student_surname. - Gruppierung der Daten nach
student_surname. - Verwendung der
HAVING-Klausel, um die Ergebnisse basierend aufCOUNT(grade) > 1zu filtern. - Sortierung der Ergebnisse nach
student_surname.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Großartig!
Completion Rate verbessert auf 4
HAVING-Klausel
Swipe um das Menü anzuzeigen
Das Schulverwaltungssystem wird überprüft, um Datenkonsistenz und Genauigkeit sicherzustellen. Im Rahmen dieser Überprüfung wurde eine neue Datenanalyseaufgabe zugewiesen.
Bei routinemäßigen Kontrollen wurde festgestellt, dass einige Schülerdatensätze mehr als einen Noteneintrag enthalten, obwohl das System so konzipiert ist, dass pro Schüler nur eine Note gespeichert wird.
Ihre Aufgabe ist es, solche Fälle zur weiteren internen Überprüfung zu identifizieren.
Überlegen wir gemeinsam, wie wir dies erreichen können. Man könnte zunächst in Betracht ziehen, dies mit einer WHERE-Klausel zu versuchen. Das könnte folgendermaßen aussehen:
123SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
Wie Sie sehen, erhalten wir eine Fehlermeldung, die darauf hinweist, dass Aggregatfunktionen nicht innerhalb einer WHERE-Klausel verwendet werden können. Hier kommt die HAVING-Klausel zum Einsatz.
Angenommen, es sollen die Abteilungen ermittelt werden, in denen das durchschnittliche Gehalt der Mitarbeiter unter 70.000 $ pro Jahr liegt.
Um dies zu erreichen, muss eine Aggregatfunktion zusammen mit der HAVING-Klausel verwendet werden:
1234SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
Wir haben eine Abteilung als Antwort mit der HAVING-Klausel erhalten, bei der wir eine Bedingung für die Spalte festgelegt haben, nach der wir die Daten gruppiert haben.
Um Datenaggregation innerhalb der HAVING-Klausel zu verwenden, muss eine Gruppierung der Daten in der Abfrage vorhanden sein. Wie in der obigen Abfrage haben wir die Daten nach der Spalte department gruppiert.
Sehen wir uns die allgemeinere Syntax der HAVING-Klausel an und wann deren Einsatz am sinnvollsten ist:
SELECT column1, column2 --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)
Lassen Sie uns auch kurz den Hauptunterschied zwischen den Klauseln WHERE und HAVING sowie deren jeweilige Anwendungsbereiche verstehen:
- Die
WHERE-Klausel wird vor der Datenaggregation verwendet, während dieHAVING-Klausel nach der Datenaggregation eingesetzt wird; - Die
WHERE-Klausel steht vorGROUP BY, während dieHAVING-Klausel nachGROUP BYgeschrieben wird.
Dies sind die zwei wichtigsten Unterschiede, die Sie sich für die erfolgreiche Anwendung der HAVING-Klausel merken sollten. Kehren wir nun zur von der Schule gestellten Aufgabe zurück.
Swipe to start coding
Einige Studierende erscheinen mehrfach in den Notenaufzeichnungen, was auf doppelte oder unerwartete Einträge im System hinweist.
Sie müssen die Nachnamen aller Studierenden abrufen, deren Datensätze mehr als einen Noteneintrag enthalten. Das Ergebnis wird von der Schulverwaltung verwendet, um die Daten bei Bedarf zu überprüfen und zu korrigieren.
Geben Sie nur die Liste der Nachnamen zurück, die diese Bedingung erfüllen, alphabetisch sortiert.
Kurzanleitung
- Abruf der Spalte
student_surname. - Gruppierung der Daten nach
student_surname. - Verwendung der
HAVING-Klausel, um die Ergebnisse basierend aufCOUNT(grade) > 1zu filtern. - Sortierung der Ergebnisse nach
student_surname.
Lösung
Danke für Ihr Feedback!
single