Problem:
Du vill summera värdena för en kolumn.
Exempel:
Vår databas har en tabell som heter game
med data i följande kolumner:id
, player
och score
.
id | spelare | poäng |
---|---|---|
1 | John | 134 |
2 | Tom | 146 |
3 | Lucy | 20 |
4 | Tom | 118 |
5 | Tom | 102 |
6 | Lucy | 90 |
7 | Lucy | 34 |
8 | John | 122 |
Låt oss hitta den totala poängen som erhållits av alla spelare.
Lösning:
SELECT SUM(score) as sum_score FROM game;
Här är resultatet:
sum_score |
---|
766 |
Diskussion:
Den aggregerade funktionen SUM
är idealisk för att beräkna summan av en kolumns värden. Denna funktion används i en SELECT
och tar namnet på den kolumn vars värden du vill summera.
Om du inte anger några andra kolumner i SELECT
sats, kommer summan att beräknas för alla poster i tabellen. I vårt exempel väljer vi bara summan och inga andra kolumner. Därför returnerar frågan i vårt exempel summan av alla poäng (766).
Naturligtvis kan vi också beräkna den totala poängen för varje spelare genom att använda en GROUP BY-klausul och välja varje spelares namn från tabellen, tillsammans med summan:
Lösning:
SELECT player, SUM(score) as sum_score FROM game GROUP BY player;
Denna fråga returnerar den totala poängen för varje spelare:
spelare | poäng |
---|---|
John | 256 |
Tom | 366 |
Lucy | 144 |