Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen HAVING-Klausel | Gruppierung
Fortgeschrittene SQL

bookHAVING-Klausel

Die Schule ist sehr dankbar für Ihre Arbeit, und nun gibt es eine neue Aufgabe für uns.

Es hat sich herausgestellt, dass einige Schüler zusätzliche Prüfungen abgelegt haben, obwohl sie nur eine ablegen sollten. Die Schule verdächtigt sie des Betrugs, da jeder Schüler nur eine Note haben sollte.

Unsere Aufgabe ist es, die Nachnamen dieser Schüler zu ermitteln und sie der Schulleitung zu übergeben, damit diese die notwendigen Maßnahmen ergreifen kann.

Überlegen wir gemeinsam, wie wir dies erreichen können. Man könnte zunächst daran denken, dass wir dies mit einer WHERE-Klausel tun können, und es würde ungefähr so aussehen:

123
SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
copy

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 ins Spiel.

Angenommen, wir müssen die Abteilungen abrufen, in denen das durchschnittliche Gehalt der Mitarbeiter unter 70.000 $ pro Jahr liegt. Um dies zu erreichen, müssen wir eine Aggregatfunktion und die HAVING-Klausel verwenden:

1234
SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
copy

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.

Hinweis

Um Datenaggregation innerhalb der HAVING-Klausel zu verwenden, muss eine Gruppierung der Daten in unserer 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 sie am besten eingesetzt wird:

SELECT column1, column2... --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)

Verstehen wir außerdem kurz den Hauptunterschied zwischen den Klauseln WHERE und HAVING sowie deren jeweilige Einsatzgebiete:

  1. Die WHERE-Klausel wird vor der Datenaggregation verwendet, während die HAVING-Klausel nach der Datenaggregation eingesetzt wird;
  2. Die WHERE-Klausel steht vor GROUP BY, während die HAVING-Klausel nach GROUP BY geschrieben wird.

Dies sind die zwei wichtigsten Unterschiede, die Sie sich für die erfolgreiche Anwendung der HAVING-Klausel merken sollten. Kehren wir nun zu der Aufgabe zurück, die uns von der Schule gestellt wurde.

Aufgabe

Swipe to start coding

Ihre Aufgabe besteht darin, die Nachnamen der Schüler abzurufen, die mehrere Noten für die Schule haben.

Sie müssen nur die Nachnamen der Schüler abrufen; es ist nicht erforderlich, die Anzahl ihrer Noten im Ergebnis anzugeben. Verwenden Sie die HAVING-Klausel und die Aggregatfunktion COUNT(), um diese Aufgabe zu erfüllen. Sortieren Sie anschließend die Nachnamen in alphabetischer Reihenfolge.

Hinweis:

Das Ergebnis sollte nur eine Spalte mit Nachnamen enthalten.

Kurzanleitung

  • Abruf der Spalte student_surname.
  • Gruppierung der Daten nach student_surname.
  • Verwendung der HAVING-Klausel zur Filterung der Ergebnisse basierend auf COUNT(grade) > 1.
  • Sortierung der Ergebnisse nach student_surname.

Lösung

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 6
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

Can you show me how to write the correct SQL query to find those students?

Can you explain why the HAVING clause works in this situation?

Can you give another example of using HAVING with a different aggregate function?

close

Awesome!

Completion rate improved to 4

bookHAVING-Klausel

Swipe um das Menü anzuzeigen

Die Schule ist sehr dankbar für Ihre Arbeit, und nun gibt es eine neue Aufgabe für uns.

Es hat sich herausgestellt, dass einige Schüler zusätzliche Prüfungen abgelegt haben, obwohl sie nur eine ablegen sollten. Die Schule verdächtigt sie des Betrugs, da jeder Schüler nur eine Note haben sollte.

Unsere Aufgabe ist es, die Nachnamen dieser Schüler zu ermitteln und sie der Schulleitung zu übergeben, damit diese die notwendigen Maßnahmen ergreifen kann.

Überlegen wir gemeinsam, wie wir dies erreichen können. Man könnte zunächst daran denken, dass wir dies mit einer WHERE-Klausel tun können, und es würde ungefähr so aussehen:

123
SELECT student_surname FROM student_grades WHERE COUNT(grade) > 1
copy

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 ins Spiel.

Angenommen, wir müssen die Abteilungen abrufen, in denen das durchschnittliche Gehalt der Mitarbeiter unter 70.000 $ pro Jahr liegt. Um dies zu erreichen, müssen wir eine Aggregatfunktion und die HAVING-Klausel verwenden:

1234
SELECT department FROM employees GROUP BY department HAVING AVG(salary) < 70000
copy

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.

Hinweis

Um Datenaggregation innerhalb der HAVING-Klausel zu verwenden, muss eine Gruppierung der Daten in unserer 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 sie am besten eingesetzt wird:

SELECT column1, column2... --(optional)
FROM table
GROUP BY column1
HAVING AGG(column_n) --(condition)

Verstehen wir außerdem kurz den Hauptunterschied zwischen den Klauseln WHERE und HAVING sowie deren jeweilige Einsatzgebiete:

  1. Die WHERE-Klausel wird vor der Datenaggregation verwendet, während die HAVING-Klausel nach der Datenaggregation eingesetzt wird;
  2. Die WHERE-Klausel steht vor GROUP BY, während die HAVING-Klausel nach GROUP BY geschrieben wird.

Dies sind die zwei wichtigsten Unterschiede, die Sie sich für die erfolgreiche Anwendung der HAVING-Klausel merken sollten. Kehren wir nun zu der Aufgabe zurück, die uns von der Schule gestellt wurde.

Aufgabe

Swipe to start coding

Ihre Aufgabe besteht darin, die Nachnamen der Schüler abzurufen, die mehrere Noten für die Schule haben.

Sie müssen nur die Nachnamen der Schüler abrufen; es ist nicht erforderlich, die Anzahl ihrer Noten im Ergebnis anzugeben. Verwenden Sie die HAVING-Klausel und die Aggregatfunktion COUNT(), um diese Aufgabe zu erfüllen. Sortieren Sie anschließend die Nachnamen in alphabetischer Reihenfolge.

Hinweis:

Das Ergebnis sollte nur eine Spalte mit Nachnamen enthalten.

Kurzanleitung

  • Abruf der Spalte student_surname.
  • Gruppierung der Daten nach student_surname.
  • Verwendung der HAVING-Klausel zur Filterung der Ergebnisse basierend auf COUNT(grade) > 1.
  • Sortierung der Ergebnisse nach student_surname.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

close

Awesome!

Completion rate improved to 4
Abschnitt 1. Kapitel 6
single

single

some-alt