OnderwerpenSpiekbriefjeLessen
Lurndo › Onderwerpen › GROUP BY

SQL leren: GROUP BY

Per groep met GROUP BY

"Eén totaal is mooi," zegt Lien, "maar welk type fiets brengt het meest op? En uit welk land komen de beste klanten?" Dat is niet één getal, maar één getal per groep.

GROUP BY maakt groepjes

GROUP BY type legt alle fietsen met hetzelfde type op één stapel. De aggregatiefunctie werkt dan per stapel: je krijgt één rij per type, met het aantal fietsen van dat type.

SELECT type, COUNT(*) AS aantal FROM fietsen GROUP BY type
Resultaat
typeaantal
bakfiets2
e-bike4
kinderfiets2
stadsfiets6
tandem2

Eén regel voor je kolommen

Met GROUP BY mag elke kolom in je SELECT maar twee dingen zijn: een kolom waarop je groepeert, of een aggregatiefunctie zoals SUM.

Zet je er een andere kolom bij, dan klaagt SQLite niet, maar kiest het een willekeurige waarde uit de groep. Andere databases geven een fout. Hier de omzet per fietstype.

SELECT fietstype, SUM(bedrag) AS omzet FROM verhuringen GROUP BY fietstype
Resultaat
fietstypeomzet
bakfiets244
e-bike1029
kinderfiets24
stadsfiets239
tandem165

Meerdere kolommen, en sorteren

Je kan op meerdere kolommen groeperen: dan is elke combinatie een groep, zoals bij DISTINCT. Hier het aantal fietsen per type en merk.

GROUP BY staat na WHERE en vóór ORDER BY. Sorteren mag ook op het resultaat van een functie, zoals ORDER BY COUNT(*) DESC.

SELECT type, merk, COUNT(*) AS aantal FROM fietsen GROUP BY type, merk ORDER BY type
Resultaat
typemerkaantal
bakfietsBabboe1
bakfietsUrban Arrow1
e-bikeGazelle1
e-bikeOxford1
e-bikeStromer2
kinderfietsBatavus1
kinderfietsOxford1
stadsfietsBatavus2

Probeer het zelf

Toon de omzet per land, het land met de hoogste omzet bovenaan.

Klaar voor meer?

De volledige les heeft 6 oefeningen, van makkelijk naar uitdagend, met hints, punten en een reeks die je kan opbouwen.

Begin aan de les
← VorigeHet kleinste en het grootsteVolgende →Groepen filteren met HAVING
SQL-onderwerpenSpiekbriefjeExcelRanglijstAccountPrivacyEnglish