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 |