Having

0

Die SQL HAVING Klausel

Die HAVING Klausel wurde zu SQL hinzugefügt, da das Schlüsselwort WHERE nicht mit Aggregatfunktionen verwendet werden kann.

HAVING Syntax

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);

Demo Datenbank

Nachfolgend sehen Sie eine Auswahl aus der Tabelle „Kunden“ in der Beispieldatenbank Northwind:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1
Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4
Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

SQL HAVING Beispiele

Die folgende SQL Anweisung listet die Anzahl der Kunden in jedem Land auf. Schließen Sie nur Länder mit mehr als 5 Kunden ein:

Beispiel

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;

Die folgende SQL Anweisung listet die Anzahl der Kunden in jedem Land auf, sortiert von hoch nach niedrig (schließt nur Länder mit mehr als 5 Kunden ein):

Beispiel

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
ORDER BY COUNT(CustomerID) DESC;

Demo Datenbank

Nachfolgend sehen Sie eine Auswahl aus der Tabelle „Orders“ in der Beispieldatenbank Northwind:

OrderIDCustomerIDEmployeeIDOrderDateShipperID
102489051996-07-043
102498161996-07-051
102503441996-07-082

Und eine Auswahl aus der Tabelle „Mitarbeiter“:

EmployeeIDLastNameFirstNameBirthDatePhotoNotes
1DavolioNancy1968-12-08EmpID1.picEducation includes a BA….
2FullerAndrew1952-02-19EmpID2.picAndrew received his BTS….
3LeverlingJanet1963-08-30EmpID3.picJanet has a BS degree….

Weitere HAVING Beispiele

Das folgende SQL Statement listet die Mitarbeiter auf, die mehr als 10 Bestellungen registriert haben:

Beispiel

SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM (Orders
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID)
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 10;

Das folgende SQL Statement listet auf, ob die Mitarbeiter „Davolio“ oder „Fuller“ mehr als 25 Bestellungen registriert haben:

Beispiel

SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM Orders
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
WHERE LastName = 'Davolio' OR LastName = 'Fuller'
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 25;
Nach oben scrollen