- Stel, we willen per leverancier (vend_id) weten hoeveel verschillende producten ze kunnen leveren.
SELECT vend_id,
COUNT(*) AS AantalProducten
FROM Products;
Error Code: 1140. In aggregated query without GROUP BY, expression
- Dit is een 'scheve query'! Deze query zou meerdere vend_id's en maar één totaal aantal rijen opleveren. Dit gaat fout!
- Aggregaatfuncties combineren met velden die meer dan één waarde op leveren kan met de clausule 'GROUP BY'
- Met de GROUP BY worden rijen gegroepeerd zodat deze als groep bekeken kunnen worden
- Met de GROUP BY kan je aggregatiefuncties toepassen op een subset van rijen
SELECT vend_id,
COUNT(*) AS AantalProducten
FROM Products
GROUP BY vend_id;
vend_id | AantalProducten |
BRS01 | 3 |
DLL01 | 4 |
FNG01 | 2 |
- Er kunnen meerdere kolommen in een GROUP BY worden opgegeven
- Elke 'gewone' kolom in de SELECT (met meerdere velden) kun je het beste in de GROUP BY zetten
- Aliassen kunnen niet worden gebruikt in een GROUP BY
Selecteer uit OrderItems het prod_id en het totaal aantal bestelde artikelen hiervan
SELECT prod_id,
SUM(quantity) AS TotaalBesteld
FROM OrderItems
GROUP BY prod_id;
prod_id | TotaalBesteld |
BNBG01 | 360 |
BNBG02 | 360 |
BNBG03 | 360 |
BR01 | 120 |
BR02 | 10 |
BR03 | 165 |
RGAN01 | 55 |