Grundkurs SQL

4.6  Zusammenfassung

Wenn in einer SQL-Anweisung alle bisher behandelten Anweisungen vorkommen, dann in folgender Reihenfolge:

SELECT   ...
FROM     ...
WHERE    ...
GROUP BY ...
HAVING   ...
ORDER BY ...

Bei Angabe von HAVING werden Gruppen so lange in die Abfrageergebnisse aufgenommen, wie sie der Bedingung entsprechen.

Ein HAVING kann nur mit GROUP BY benutzt werden, um die Kriterien anzugeben, die Gruppen erfüllen müssen, um in den Abfrageergebnissen zu erscheinen. Wir filtern also mit HAVING die einzelnen gebildeten Gruppen! HAVING kann beliebig viele Filterbedingungen enthalten, die mit den Operatoren AND oder OR verbunden werden. Sie können auch NOT benutzen, um das Ergebnis des Ausdrucks umzukehren.

In folgendem abschließenden Beispiel wollen wir einmal alle denkbaren Teile einer SQL - Anweisung verwenden.
Dazu lassen wir uns, nach dem Durchschnittslohn absteigend sortiert, alle Abteilungen anzeigen, bei denen dieser Durchschnittslohn über 800 Euro liegt - dies aber nur für Mitarbeiter deren PositionsID zwischen 1 und 4 liegt:

[5]SELECT   abteilung_ID AS Abteilung, AVG(bruttolohn) AS Durchschnittslohn
FROM     tbl_mitarbeiter
WHERE    position BETWEEN 1 AND 6
GROUP BY abteilung_ID
HAVING   AVG(bruttolohn)>800
ORDER BY AVG(bruttolohn) DESC

Versuchen Sie in einem weiterem Schritt die Namen der Abteilungen anzeigen zulassen. Ein Tipp, es muss noch ein JOIN eingebaut werden.