sql >> Database teknologi >  >> RDS >> SQLite

Sådan fungerer SQLite Sum()

SQLite sum() funktion returnerer summen af ​​alle ikke-NULL værdier i en gruppe.

Hvis der ikke er nogen ikke-NULL-værdier, returnerer den NULL.

Denne funktion giver dig grundlæggende mulighed for at tilføje alle værdierne i et resultatsæt eller en tabel.

Eksempel

Her er et eksempel for at demonstrere dets brug.

SELECT sum(Price) FROM Products;

Resultat:

738.22

Dette eksempel er sandsynligvis meningsløst, hvis du ikke kan se de faktiske værdier i tabellen.

Her er en forespørgsel, der returnerer alle rækker i den tabel.

SELECT * FROM Products;

Resultat:

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                    

sum() funktionen tilføjede simpelthen alle værdierne i Pris kolonne.

Bemærk, at den sidste rækkes pris er NULL. Det er ok. sum() funktion tilføjer simpelthen alle ikke-NULL værdier.

NULL-værdier

Hvis der ikke er nogen ikke-NULL-værdier, er resultatet NULL.

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

Resultat:

      

(Det er med vilje tomt, fordi det returnerede NULL).

Dette er forskelligt fra hvordan SQLite total() funktion omhandler NULL-værdier (den returnerer 0,0). Begge sum() og total() gør det samme, bortset fra denne forskel.

Mindre resultatsæt

Det første eksempel tilføjede alle rækker i tabellen. Men det behøver ikke at være hele bordet. Som det ses i "NULL"-eksemplet, kan du også bruge en WHERE klausul for at tilføje et undersæt af værdier i tabellen.

Her er et andet eksempel, der bruger en WHERE klausul.

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

Resultat:

528.95

Denne gang tilføjer det ikke-NULL-værdier, så jeg får et ikke-NULL-resultat.

Her er en anden, der filtrerer efter den samme kolonne, som jeg tilføjer.

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

Resultat:

648.95

Input uden heltal

Hvis et input hverken er et heltal eller NULL, så sum() returnerer en flydende kommaværdi, som kan være en tilnærmelse til den sande sum.

Du kan få nogle uventede resultater i sådanne tilfælde.

Nedenfor er et eksempel, der forsøger at tilføje en masse faxnumre.

Lad os først se på listen over faxnumre.

SELECT Fax FROM Customer 
WHERE Fax IS NOT NULL;

Resultat:

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 

Her er hvad der sker, hvis jeg prøver at tilføje dem.

SELECT sum(Fax) 
FROM Customer;

Resultat:

701.0 

I dette tilfælde ser den ud til at have tilføjet alle præfikser.

Her er, hvad der sker, hvis jeg bruger sum() på en kolonne af strenge.

SELECT sum(ProductName) 
FROM Products;

Resultat:

0.0

Det SÆRLIGE søgeord

Du kan tilføje DISTINCT nøgleord for kun at tilføje forskellige værdier. For at gøre dette, brug sum(DISTINCT X) hvor X er kolonnenavnet.

Se Sådan tilføjer du kun de distinkte værdier med SQLite Sum() for et eksempel.


  1. Sådan identificerer du MySQL-ydelsesproblemer med langsomme forespørgsler

  2. Hvordan skriver man IF ELSE-sætning i en MySQL-forespørgsel

  3. Generer_serier i Postgres fra start- og slutdato i en tabel

  4. Formater sysjobhistorie, dato og varighed Kolonner i SQL Server