W SQLite total()
funkcja zwraca sumę wszystkich wartości innych niż NULL w grupie.
Jeśli nie ma wartości innych niż NULL, zwraca 0.0.
Ta funkcja jest podobna do sum()
funkcji, z wyjątkiem sposobu, w jaki obsługuje wejścia NULL. Jeśli nie ma wartości innych niż NULL, sum()
zwraca NULL (zamiast 0.0 jak total()
funkcja powraca).
Przykład
Rozważ poniższą tabelę.
SELECT * FROM Products;
Wynik:
ProductId ProductName Price ---------- --------------------- ---------- 1 Blue Widgets (6 Pack) 389.45 2 Widget Holder 139.5 3 Widget Opener 89.27 4 Foobar Set 120.0 5 Red Widget
Możemy użyć total()
funkcja, aby uzyskać sumę cen.
SELECT total(Price) FROM Products;
Wynik:
738.22
Mimo że cena ostatniego wiersza wynosi NULL, total()
funkcja może sobie z tym poradzić, ponieważ dodaje wszystkie wartości inne niż NULL i ignoruje wartość NULL.
Wszystkie wartości NULL
Jeśli nie ma wartości innych niż NULL, wynikiem jest 0.0.
SELECT total(Price)
FROM Products
WHERE ProductId = 5;
Wynik:
0.0
To tutaj total()
i sum()
różnić się. W tym przypadku sum()
zwróciłby NULL.
total()
funkcja zawsze zwraca wartość zmiennoprzecinkową.
Pamiętaj jednak, że nie jest to zgodne ze standardem SQL. Jeśli chcesz użyć kodu zgodnego ze standardem, użyj sum()
.
Uzyskaj sumę podzbioru
Oto kolejny przykład, który używa WHERE
klauzula zwracająca podzbiór tabeli.
SELECT total(Price)
FROM Products
WHERE ProductId > 2;
Wynik:
209.27
Tym razem dodaje wartości różne od NULL, więc otrzymuję wynik inny niż NULL.
Oto kolejny, który filtruje według tej samej kolumny, którą dodaję.
SELECT total(Price)
FROM Products
WHERE Price < 150;
Wynik:
348.77