Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Daten abfragen und ändern » Abfrageergebnisse zusammenfassen, gruppieren und sortieren

 

HAVING-Klausel: Datengruppen auswählen

Die HAVING-Klausel schränkt die Zeilen ein, die von einer Abfrage zurückgegeben werden. Sie setzt Bedingungen für die GROUP BY-Klausel auf ähnliche Art wie WHERE Bedingungen für die SELECT-Klausel setzt.

Die Suchbedingungen der HAVING-Klausel sind mit den WHERE-Suchbedingungen identisch, nur dass die WHERE-Suchbedingungen keine Aggregate enthalten dürfen. Die folgende Verwendung beispielsweise ist zulässig:

HAVING AVG( UnitPrice ) > 20

Die folgende Verwendung ist nicht zulässig:

WHERE AVG( UnitPrice ) > 20
HAVING mit Aggregatfunktionen verwenden

Die nachfolgende Anweisung ist ein Beispiel für den einfachen Einsatz der HAVING-Klausel mit einer Aggregatfunktion.

Um die Produkte aufzulisten, die in verschiedenen Größen oder Farben verfügbar sind, benötigen Sie eine Abfrage, die die Zeilen in der Tabelle "Products" nach Namen gruppiert und die Gruppen eliminiert, die nur ein bestimmtes Produkt enthalten:

SELECT Name
   FROM Products
   GROUP BY Name
   HAVING COUNT( * ) > 1;
Name
Tee Shirt
Baseball Cap
Visor
Sweatshirt

Hinweise darüber, wann Sie Aggregatfunktionen in HAVING-Klauseln verwenden können, finden Sie unter Wo Sie Aggregatfunktionen verwenden können.

HAVING ohne Aggregatfunktionen verwenden

Die HAVING-Klausel kann auch ohne Aggregatfunktionen verwendet werden.

Mit der nachstehenden Abfrage werden die Produkte gruppiert und das Ergebnis wird nur auf jene Gruppen eingeschränkt, deren Name mit B beginnt.

SELECT Name
   FROM Products
   GROUP BY Name
   HAVING Name LIKE 'B%';
Name
Baseball Cap
Mehr als eine Bedingung in der Having-Klausel

In die HAVING-Klausel können auch mehrere Bedingungen eingebaut werden. Sie werden mit den Operatoren AND, OR oder NOT kombiniert, wie im nachstehenden Beispiel gezeigt wird.

Um die Produkte aufzulisten, die in verschiedenen Größen oder Farben verfügbar sind und für die eine Version mehr als 10 Dollar kostet, benötigen Sie eine Abfrage, die die Zeile in der Tabelle "Products" nach Namen gruppiert, jedoch die Gruppen eliminiert, die nur ein bestimmtes Produkt enthalten sowie die Gruppen, deren Maximalpreis unter 10 Dollar liegt.

SELECT Name
   FROM Products
   GROUP BY Name
   HAVING COUNT( * ) > 1
   AND MAX( UnitPrice ) > 10;
Name
Tee Shirt
Sweatshirt