SQLite sum()
funkcja zwraca sumę wszystkich wartości innych niż NULL w grupie.
Jeśli nie ma wartości innych niż NULL, zwraca NULL.
Ta funkcja zasadniczo umożliwia dodanie wszystkich wartości w zestawie wyników lub w tabeli.
Przykład
Oto przykład demonstrujący jego użycie.
SELECT sum(Price) FROM Products;
Wynik:
738.22
Ten przykład jest prawdopodobnie bez znaczenia, jeśli nie widzisz rzeczywistych wartości w tabeli.
Oto zapytanie, które zwraca wszystkie wiersze w tej tabeli.
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
Więc sum()
funkcja po prostu dodała wszystkie wartości w Cenie kolumna.
Zauważ, że cena ostatniego wiersza wynosi NULL. W porządku. sum()
funkcja po prostu dodaje wszystkie wartości inne niż NULL.
Wartości NULL
Jeśli nie ma wartości innych niż NULL, wynikiem jest NULL.
SELECT sum(Price)
FROM Products
WHERE ProductId = 5;
Wynik:
(To celowo jest puste, ponieważ zwróciło NULL).
Różni się to od sposobu, w jaki SQLite total()
funkcja zajmuje się wartościami NULL (zwraca 0.0). Obie sum()
i total()
zrób to samo, z wyjątkiem tej różnicy.
Mniejszy zestaw wyników
Pierwszy przykład dodał wszystkie wiersze w tabeli. Ale to nie musi być cały stół. Jak widać w przykładzie „NULL”, możesz również użyć WHERE
klauzula, aby dodać podzbiór wartości w tabeli.
Oto kolejny przykład, w którym użyto WHERE
klauzula.
SELECT sum(Price)
FROM Products
WHERE ProductId < 3;
Wynik:
528.95
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 sum(Price)
FROM Products
WHERE Price > 100;
Wynik:
648.95
Wejścia niebędące liczbami całkowitymi
Jeśli jakiekolwiek dane wejściowe nie są liczbą całkowitą ani NULL, to sum()
zwraca wartość zmiennoprzecinkową, która może być przybliżeniem do prawdziwej sumy.
W takich przypadkach możesz uzyskać nieoczekiwane wyniki.
Poniżej znajduje się przykład, który próbuje dodać kilka numerów faksów.
Najpierw spójrzmy na listę numerów faksów.
SELECT Fax FROM Customer
WHERE Fax IS NOT NULL;
Wynik:
Fax ------------------ +55 (12) 3923-5566 +420 2 4172 5555 +55 (11) 3033-4564 +55 (11) 3055-8131 +55 (21) 2271-7070 +55 (61) 3363-7855 +1 (780) 434-5565 +1 (604) 688-8756 +1 (650) 253-0000 +1 (425) 882-8081 +1 (212) 221-4679 +1 (408) 996-1011
Oto, co się stanie, jeśli spróbuję je dodać.
SELECT sum(Fax)
FROM Customer;
Wynik:
701.0
W tym przypadku wydaje się, że dodano wszystkie przedrostki.
Oto, co się stanie, jeśli użyję sum()
na kolumnie ciągów.
SELECT sum(ProductName)
FROM Products;
Wynik:
0.0
DISTINCT Słowo kluczowe
Możesz dodać DISTINCT
słowo kluczowe, aby dodać tylko różne wartości. Aby to zrobić, użyj sum(DISTINCT X)
gdzie X
to nazwa kolumny.
Zobacz, jak dodać tylko odrębne wartości za pomocą SQLite Sum() na przykład.