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 |