- 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 |