Problem:
Chcesz zsumować wartości kolumny.
Przykład:
Nasza baza danych zawiera tabelę o nazwie game
z danymi w następujących kolumnach:id
, player
i score
.
id | gracz | wynik |
---|---|---|
1 | Jan | 134 |
2 | Tomek | 146 |
3 | Lucy | 20 |
4 | Tomek | 118 |
5 | Tomek | 102 |
6 | Lucy | 90 |
7 | Lucy | 34 |
8 | Jan | 122 |
Znajdźmy łączny wynik uzyskany przez wszystkich graczy.
Rozwiązanie:
SELECT SUM(score) as sum_score FROM game;
Oto wynik:
sum_score |
---|
766 |
Dyskusja:
Funkcja agregująca SUM
jest idealny do obliczania sumy wartości kolumny. Ta funkcja jest używana w SELECT
i przyjmuje nazwę kolumny, której wartości chcesz zsumować.
Jeśli nie określisz żadnych innych kolumn w SELECT
zestawienia, wówczas suma zostanie obliczona dla wszystkich rekordów w tabeli. W naszym przykładzie wybieramy tylko sumę i żadnych innych kolumn. Dlatego zapytanie w naszym przykładzie zwraca sumę wszystkich wyników (766).
Oczywiście możemy również obliczyć całkowity wynik zdobyty przez każdego gracza, używając klauzuli GROUP BY i wybierając imię każdego gracza z tabeli, obok sumy:
Rozwiązanie:
SELECT player, SUM(score) as sum_score FROM game GROUP BY player;
To zapytanie zwraca całkowity wynik każdego gracza:
gracz | wynik |
---|---|
Jan | 256 |
Tomek | 366 |
Lucy | 144 |