SQL Beginnershandleiding

  1. Inleiding
  2. De eerste tabel
  3. De database benaderen vanuit PHP
  4. PDO: De database benaderen vanuit PHP
  5. Invoegen van records
  6. PDO: Invoegen van records
  7. Selecteren van records
  8. PDO: Selecteren van records
  9. Wijzigen van records
  10. PDO: Wijzigen van records
  11. Verwijderen van records
  12. PDO: Verwijderen van records
  13. Sleutels en constraints
  14. Selecteren uit meerdere tabellen: JOINS
  15. Werken met data en tijden
  16. Aggregate functies en GROUP BY
  17. Debuggen: het oplossen van SQL fouten
  18. Slotwoord en referenties
  19. Reacties op deze tutorial

Aggregate functies en GROUP BY

Een van de laatste aspecten die ik in deze tutorial wil behandelen is het gebruik van verzamelingsfuncties en de bijbehorende GROUP BY clausule.

Verzamelingsfuncties worden gebruikt om gegevens over groepen records te bepalen. Denk dan bijvoorbeeld aan het aantal werknemers per salaris schaal of de gemiddelde salaris schaal van alle werknemers. Deze berekeningen worden allemaal uitgevoerd aan de hand van verzamelingsfuncties (aggregate functies) waarvan we hier enkele voorbeelden zullen bekijken.

Het aantal werknemers per salaris schaal (SQL)
Om een aantal records te bepalen gebruiken we de functie COUNT():
Code: query
1
2
3
4
5
6
7
SELECT
    salaris_schaal,
    COUNT(id) AS aantal
FROM
    werknemers
GROUP BY
    salaris_schaal
Code: output
1
2
3
4
5
6
7
8
+----------------+--------+
| salaris_schaal | aantal |
+----------------+--------+
|             10 |      3 |
|             15 |      1 |
|             18 |      1 |
|             20 |      1 |
+----------------+--------+

In de SELECT clausule selecteren we de salaris_schaal en gebruiken we COUNT(id) om het aantal werknemers te bepalen. Door de GROUP BY die we aan het eind van de query toevoegen wordt het aantal werknemers gegroepeert per salaris_schaal.

Er is een belangrijke regel voor het gebruik van GROUP BY:
Bij het gebruik van GROUP BY moeten alle kolommen die in de SELECT clausule voorkomen en geen onderdeel zijn van een aggregate functie, opgenomen zijn in de GROUP BY clausule

We zien dat bovenstaande query aan deze regel voldoet. De kolom salaris_schaal komt voor in de SELECT en wordt niet gebruikt in een aggregate functie. Daarom staat hij ook in de GROUP BY. In dit eenvoudige voorbeeldje is het wellicht nog logisch dat die kolom in de GROUP BY moet staan, maar naarmate je queries langer worden is deze regel een goede controle.

Gemiddelde salaris schaal
Om de gemiddelde salaris schaal van alle werknemers te bepalen, gebruiken we de volgende query:
Code: query
1
2
3
4
SELECT
    AVG(salaris_schaal) AS gemiddelde
FROM
    werknemers
Code: output
1
2
3
4
5
+------------+
| gemiddelde |
+------------+
|    13.8333 |
+------------+

In deze query nemen we geen GROUP BY clausule op, simpelweg omdat er geen kolom is om op te groeperen. We willen dan ook het gemiddelde van alle werknemers ophalen.

Meer toepassingen van aggregate functies
Deze twee voorbeeldjes zijn wederom maar het kleine topje van een hele grote ijsberg. Maar ook dit onderwerp is veel te uitgebreid om in deze tutorial te behandelen. Mocht je meer over dit onderwerp willen lezen, dan verwijs ik je graag naar mijn tutorial over het juiste gebruik van GROUP BY.

Vorige Volgende