SQL HAVING statement

HAVING-clausule

De reden om een HAVING-clausule toe te voegen in SQL is omdat de WHERE-sleutel niet kan worden gebruikt met samenvattende functies.

SQL HAVING syntaxis

SELECT kolomnaam, aggregatiefunctie(kolomnaam)
FROM tabelnaam
WHERE kolomnaam operator waarde
GROUP BY kolomnaam
HAVING aggregatiefunctie(kolomnaam) operator waarde

SQL HAVING voorbeeld

We hebben de volgende "Orders"-tabel:

O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter

Nu willen we klanten vinden met een order totaalbedrag minder dan 2000.

We gebruiken de volgende SQL-query:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000

De resultaten zijn vergelijkbaar:

Customer SUM(OrderPrice)
Carter 1700

Nu willen we klanten vinden die "Bush" of "Adams" hebben met een order totaalbedrag van meer dan 1500.

We hebben een gewone WHERE-clausule toegevoegd aan de SQL-query:

SELECT Customer,SUM(OrderPrice) FROM Orders
WHERE Customer='Bush' OR Customer='Adams'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500

Resultaten:

Customer SUM(OrderPrice)
Bush 2000
Adams 2000