Met HAVING
is het mogelijk om een resultset met zogeheten aggregratie functies te limiteren.
Deze functies kunnen namelijk niet in de WHERE
clausule worden gebruikt.
SELECT kolomnaam
FROM Tabelnaam
GROUP BY kolomnaam
HAVING COUNT(kolomnaam2) > 2
In de query hierboven gebruiken we de COUNT
functie. Dit is een aggregratie functie en om deze reden moeten we ook een GROUP BY
gebruiken.
HAVING
in de praktijk
De volgende dataset is de inhoud van de tabel Order.
ordernummer, klantnaam, orderbedrag 1, 'Henk Janssen', '23.20' 2, 'Mieke Sterk', '2.30' 3, 'Sjoerd Vermeulen', '12.93' 4, 'Mieke Sterk', '54.92' 5, 'Henk Janssen', '6.12' 6, 'Mieke Sterk', '9.60'
We willen alle klanten selecteren die meer dan 15 euro hebben besteed. We gebruiken hiervoor de SUM-functie
SELECT klantnaam, SUM(orderbedrag) as totaal
FROM Order
GROUP BY klantnaam
HAVING SUM(orderbedrag) > 15
klantnaam, totaal 'Henk Janssen', '29.32' 'Mieke Sterk', '66.92'