Probleem:
U wilt de waarden van een kolom optellen.
Voorbeeld:
Onze database heeft een tafel met de naam game
met gegevens in de volgende kolommen:id
, player
, en score
.
id | speler | score |
---|---|---|
1 | Jan | 134 |
2 | Tom | 146 |
3 | Lucy | 20 |
4 | Tom | 118 |
5 | Tom | 102 |
6 | Lucy | 90 |
7 | Lucy | 34 |
8 | Jan | 122 |
Laten we eens kijken naar de totale score die alle spelers hebben behaald.
Oplossing:
SELECT SUM(score) as sum_score FROM game;
Dit is het resultaat:
sum_score |
---|
766 |
Discussie:
De aggregatiefunctie SUM
is ideaal voor het berekenen van de som van de waarden van een kolom. Deze functie wordt gebruikt in een SELECT
statement en krijgt de naam van de kolom waarvan u de waarden wilt optellen.
Als u geen andere kolommen opgeeft in de SELECT
afschrift, dan wordt de som berekend voor alle records in de tabel. In ons voorbeeld selecteren we alleen de som en geen andere kolommen. Daarom retourneert de query in ons voorbeeld de som van alle scores (766).
Natuurlijk kunnen we ook de totale score berekenen die door elke speler is verdiend door een GROUP BY-clausule te gebruiken en de naam van elke speler uit de tabel te selecteren, naast de som:
Oplossing:
SELECT player, SUM(score) as sum_score FROM game GROUP BY player;
Deze zoekopdracht geeft de totale score voor elke speler:
speler | score |
---|---|
Jan | 256 |
Tom | 366 |
Lucy | 144 |