sql >> Databáze >  >> RDS >> SQLite

Jak funguje SQLite Sum()

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().


  1. Vydán SQL Developer 4.0

  2. Spouštěče SQL Server – Část 2 Spouštěče DDL &LOGON

  3. MariaDB BENCHMARK() Vysvětleno

  4. Příběh dvou shluků faktorů