TurboSQL Guide

HAVING

Top  Previous  Next

Gibt Filterbedingungen für eine SELECT-Anweisung an.

HAVING predicates

Beschreibung

Verwenden Sie eine HAVING-Klausel, um die von einer SELECT-Anweisung abgerufenen Zeilen auf eine Untermenge von Zeilen zu beschränken, für welche die aggregierten Spaltenwerte den angegebenen Kriterien genügen. Eine HAVING-Klausel kann nur dann in einer SELECT-Anweisung verwendet werden, wenn:

die Anweisung auch eine GROUP BY-Klausel enthält,
eine oder mehrere Spalten Subjekte von Aggregatfunktionen sind.

Der Wert für eine HAVING-Klausel sind ein oder mehrere logische Ausdrücke oder Prädikate, die für jede aggregierte, der Tabelle entnommene Zeile TRUE oder FALSE ergeben. Nur jene Zeilen, für welche die Prädikate TRUE ergeben, werden von einer SELECT-Anweisung entnommen. So entnimmt beispielsweise folgende SELECT-Anweisung alle Zeilen, in denen die Verkaufssumme für individuelle Verkaufssummen den Wert 1000 übersteigt:

SELECT company, SUM(sales) AS TOTALSALES
FROM sales1998
GROUP BY company
HAVING (SUM(sales) >= 1000)
ORDER BY company

Mehrere Prädikate müssen durch einen der logischen Operatoren OR oder AND getrennt werden. Jedes Prädikat kann durch den Operator NOT negiert werden. Klammern können zur Erzeugung verschiedener Zeilenevaluierungskriterien verwendet werden, um logische Vergleiche und Gruppen von Vergleichen zu isolieren.

Eine SELECT-Anweisung kann sowohl eine WHERE- als auch eine HAVING-Klausel enthalten. Die WHERE-Klausel filtert die zu aggregierenden Daten unter Verwendung der Spalten, die nicht Subjekte von Aggregatfunktionen sind. Die HAVING-Klausel filtert dann die Daten nach der Aggregation unter Verwendung derjenigen Spalten, die Subjekte von Aggregatfunktionen sind. Folgende SELECT-Abfrage führt die gleiche Operation wie obige durch, die Daten sind jedoch auf jene beschränkt, deren Spalte STATE den Wert "CA" hat:

SELECT company, SUM(sales) AS TOTALSALES
FROM sales1998
WHERE (state = "CA")
GROUP BY company
HAVING (SUM(sales) >= 1000)
ORDER BY company

Hinweis

Eine HAVING-Klausel filtert Daten nach der Aggregation einer GROUP BY-Klausel. Verwenden Sie eine WHERE-Klausel zum Filtern basierend auf Zeilenwerten vor der Aggregation.

Anwendung

SELECT mit GROUP BY