sql >> Database >  >> RDS >> SQLite

Hoe SQLite Sum() werkt

De SQLite sum() functie retourneert de som van alle niet-NULL-waarden in een groep.

Als er geen niet-NULL-waarden zijn, wordt NULL geretourneerd.

Met deze functie kunt u in principe alle waarden in een resultatenset of een tabel bij elkaar optellen.

Voorbeeld

Hier is een voorbeeld om het gebruik te demonstreren.

SELECT sum(Price) FROM Products;

Resultaat:

738.22

Dit voorbeeld is waarschijnlijk zinloos als u de werkelijke waarden in de tabel niet kunt zien.

Hier is een zoekopdracht die alle rijen in die tabel retourneert.

SELECT * FROM Products;

Resultaat:

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                    

Dus de sum() functie heeft simpelweg alle waarden in de Prijs . toegevoegd kolom.

Merk op dat de prijs van de laatste rij NULL is. Dat is goed. De sum() functie voegt eenvoudig alle niet-NULL-waarden toe.

NULL-waarden

Als er geen niet-NULL-waarden zijn, is het resultaat NULL.

SELECT sum(Price) 
FROM Products
WHERE ProductId = 5;

Resultaat:

      

(Dat is opzettelijk blanco, omdat het NULL teruggeeft).

Dit is anders dan hoe de SQLite total() functie behandelt NULL-waarden (retourneert 0,0). Beide sum() en total() doe hetzelfde, behalve dit verschil.

Kleinere resultaatset

In het eerste voorbeeld zijn alle rijen in de tabel toegevoegd. Maar het hoeft niet de hele tafel te zijn. Zoals te zien is in het voorbeeld "NULL", kunt u ook een WHERE . gebruiken clausule om een ​​subset van waarden aan de tabel toe te voegen.

Hier is nog een voorbeeld dat een WHERE . gebruikt clausule.

SELECT sum(Price) 
FROM Products
WHERE ProductId < 3;

Resultaat:

528.95

Deze keer voegt het niet-NULL-waarden toe, dus ik krijg een niet-NULL-resultaat.

Hier is er nog een die filtert op dezelfde kolom die ik toevoeg.

SELECT sum(Price) 
FROM Products
WHERE Price > 100;

Resultaat:

648.95

Niet-gehele invoer

Als een invoer geen geheel getal of NULL is, dan sum() geeft een drijvende-kommawaarde terug die een benadering kan zijn van de werkelijke som.

In dergelijke gevallen kunt u onverwachte resultaten krijgen.

Hieronder ziet u een voorbeeld waarbij wordt geprobeerd een aantal faxnummers toe te voegen.

Laten we eerst eens kijken naar de lijst met faxnummers.

SELECT Fax FROM Customer 
WHERE Fax IS NOT NULL;

Resultaat:

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 

Dit is wat er gebeurt als ik ze probeer op te tellen.

SELECT sum(Fax) 
FROM Customer;

Resultaat:

701.0 

In dit geval lijkt het dat alle voorvoegsels zijn toegevoegd.

Dit is wat er gebeurt als ik sum() gebruik op een kolom met tekenreeksen.

SELECT sum(ProductName) 
FROM Products;

Resultaat:

0.0

Het DISTINCT-zoekwoord

U kunt de DISTINCT . toevoegen trefwoord om alleen afzonderlijke waarden toe te voegen. Gebruik hiervoor sum(DISTINCT X) waar X is de kolomnaam.

Zie Hoe u alleen de verschillende waarden kunt toevoegen met SQLite Sum() voor een voorbeeld.


  1. MySQL:transactie binnen een opgeslagen procedure

  2. MySql zet rij om in kolom en kolom in rij

  3. Wat is NoSQL en hoe wordt het gebruikt?

  4. Wat is het verschil tussen RANK en DENSE_RANK in SQL?