De voorgaande methode is vrij omslachtig. Gelukkig kent SQL een opdracht om rijen te groeperen op basis van overeenkomsten tussen die rijen: GROUP BY. In dit voorbeeld zou de tabel rekeninghouder gegroepeerd moeten worden op basis van gelijke woonplaatsen. Hiervan kunnen we dan opvragen uit hoeveel rekeninghouders elke groep (woonplaats) bestaat:
SELECT plaats, COUNT(*) AS 'aantal rekeninghouders'
FROM rekeninghouder
GROUP BY plaats;
Het resultaat van deze query is een lijst met woonplaatsen met daarachter het aantal rekeninghouders uit de desbetreffende woonplaats.
Het is ook mogelijk om te groeperen op twee kolommen. We willen graag weten of er rekeningen bestaan die dezelfde status en het zelfde saldo hebben. Daarvoor voeren we de onderstaande query uit:
SELECT saldo, status, COUNT(*)
FROM rekening
GROUP BY saldo, status;
Hieronder zie je een stukje van het resultaat: