sql >> Databasteknik >  >> RDS >> SQLite

Hur SQLite Total() fungerar

I SQLite, total() funktion returnerar summan av alla icke-NULL-värden i en grupp.

Om det inte finns några icke-NULL-värden, returnerar det 0.0.

Denna funktion liknar sum() funktion, förutom hur den hanterar NULL-ingångar. När det inte finns några icke-NULL-värden, sedan sum() returnerar NULL (istället för 0.0 som total() funktion returnerar).

Exempel

Tänk på följande tabell.

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                    

Vi kan använda total() funktion för att få en summa av priserna.

SELECT total(Price) FROM Products;

Resultat:

738.22

Även om den sista radens pris är NULL, är total() funktionen kan hantera det, eftersom den lägger till alla icke-NULL-värden och ignorerar NULL-värdet.

Alla NULL-värden

Om det inte finns några icke-NULL-värden blir resultatet 0.0.

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

Resultat:

0.0      

Det är här total() och sum() skilja sig. I det här fallet, sum() skulle ha returnerat NULL.

total() funktion returnerar alltid ett flyttalsvärde.

Tänk på att detta inte överensstämmer med SQL-standarden. Om du vill använda standardkompatibel kod, använd sum() .

Få summan av en delmängd

Här är ett annat exempel som använder en WHERE klausul för att returnera en delmängd av tabellen.

SELECT total(Price) 
FROM Products
WHERE ProductId > 2;

Resultat:

209.27

Den här gången lägger det till icke-NULL-värden, så jag får ett icke-NULL-resultat.

Här är en annan som filtrerar efter samma kolumn som jag lägger till.

SELECT total(Price) 
FROM Products
WHERE Price < 150;

Resultat:

348.77 

  1. Konvertera SQL2008 RDL-fil till SQL2005

  2. Installerar MySQL-python

  3. ODP.NET-anslutningspoolning:Hur man avgör om en anslutning har använts

  4. Kör endast en utlösare när vissa kolumner är uppdaterade (SQL-server)