SQLite sum()
funkce vrací součet všech hodnot ve skupině, které nejsou NULL.
Pokud neexistují žádné jiné hodnoty než NULL, vrátí hodnotu NULL.
Tato funkce v podstatě umožňuje sečíst všechny hodnoty v sadě výsledků nebo v tabulce.
Příklad
Zde je příklad, který demonstruje jeho použití.
SELECT sum(Price) FROM Products;
Výsledek:
738.22
Tento příklad pravděpodobně nemá smysl, pokud v tabulce nevidíte skutečné hodnoty.
Zde je dotaz, který vrátí všechny řádky v této tabulce.
SELECT * FROM Products;
Výsledek:
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
Tedy sum()
funkce jednoduše přidala všechny hodnoty v ceně sloupec.
Všimněte si, že cena posledního řádku je NULL. To je v pořádku. sum()
funkce jednoduše přidá všechny hodnoty, které nejsou NULL.
Hodnoty NULL
Pokud neexistují žádné jiné hodnoty než NULL, je výsledkem NULL.
SELECT sum(Price)
FROM Products
WHERE ProductId = 5;
Výsledek:
(To je záměrně prázdné, protože vrátilo NULL).
To se liší od toho, jak SQLite total()
funkce pracuje s hodnotami NULL (vrací 0,0). Oba sum()
a total()
udělejte totéž, s výjimkou tohoto rozdílu.
Menší sada výsledků
První příklad přidal všechny řádky v tabulce. Ale nemusí to být celá tabulka. Jak je vidět v příkladu „NULL“, můžete také použít WHERE
klauzule k přidání podmnožiny hodnot do tabulky.
Zde je další příklad, který používá WHERE
doložka.
SELECT sum(Price)
FROM Products
WHERE ProductId < 3;
Výsledek:
528.95
Tentokrát přidává hodnoty jiné než NULL, takže dostanu výsledek, který není NULL.
Zde je další, který filtruje podle stejného sloupce, který přidávám.
SELECT sum(Price)
FROM Products
WHERE Price > 100;
Výsledek:
648.95
Neceločíselné vstupy
Pokud jakýkoli vstup není celé číslo ani NULL, pak sum()
vrátí hodnotu s plovoucí desetinnou čárkou, která může být aproximací skutečného součtu.
V takových případech můžete získat nějaké neočekávané výsledky.
Níže je uveden příklad pokusu o přidání hromady faxových čísel.
Nejprve se podívejme na seznam faxových čísel.
SELECT Fax FROM Customer
WHERE Fax IS NOT NULL;
Výsledek:
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
Nyní se podívejme, co se stane, když se je pokusím sečíst.
SELECT sum(Fax)
FROM Customer;
Výsledek:
701.0
V tomto případě se zdá, že byly přidány všechny předpony.
Zde je to, co se stane, když použiji sum()
na sloupci řetězců.
SELECT sum(ProductName)
FROM Products;
Výsledek:
0.0
Klíčové slovo DISTINCT
Můžete přidat DISTINCT
klíčové slovo pro přidání pouze odlišných hodnot. Chcete-li to provést, použijte sum(DISTINCT X)
kde X
je název sloupce.
Viz příklad Jak přidat pouze odlišné hodnoty pomocí SQLite Sum().