SQLite
 sql >> Base de données >  >> RDS >> SQLite

Comment fonctionne SQLite Sum()

Le SQLite sum() La fonction renvoie la somme de toutes les valeurs non NULL d'un groupe.

S'il n'y a pas de valeurs non NULL, il renvoie NULL.

Cette fonction vous permet essentiellement d'additionner toutes les valeurs d'un jeu de résultats ou d'un tableau.

Exemple

Voici un exemple pour démontrer son utilisation.

SELECT sum(Price) FROM Products;

Résultat :

738.22

Cet exemple n'a probablement aucun sens si vous ne pouvez pas voir les valeurs réelles dans le tableau.

Voici une requête qui renvoie toutes les lignes de cette table.

SELECT * FROM Products;

Résultat :

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                    

Donc le sum() fonction a simplement ajouté toutes les valeurs dans le Prix colonne.

Notez que le prix de la dernière ligne est NULL. C'est bon. La sum() la fonction ajoute simplement toutes les valeurs non NULL.

Valeurs NULLES

S'il n'y a pas de valeurs non NULL, le résultat est NULL.

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

Résultat :

      

(C'est intentionnellement vide, car il a renvoyé NULL).

Ceci est différent de la façon dont le SQLite total() La fonction traite les valeurs NULL (elle renvoie 0,0). Les deux sum() et total() faire la même chose, sauf pour cette différence.

Ensemble de résultats plus petit

Le premier exemple a ajouté toutes les lignes du tableau. Mais il n'est pas nécessaire que ce soit toute la table. Comme vu dans l'exemple "NULL", vous pouvez également utiliser un WHERE clause pour ajouter un sous-ensemble de valeurs dans la table.

Voici un autre exemple qui utilise un WHERE clause.

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

Résultat :

528.95

Cette fois, il ajoute des valeurs non NULL, donc j'obtiens un résultat non NULL.

En voici un autre qui filtre par la même colonne que j'ajoute.

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

Résultat :

648.95

Entrée non entière

Si une entrée n'est ni un entier ni NULL, alors sum() renvoie une valeur à virgule flottante qui pourrait être une approximation de la vraie somme.

Vous pourriez obtenir des résultats inattendus dans de tels cas.

Vous trouverez ci-dessous un exemple qui tente d'ajouter un groupe de numéros de fax.

Examinons d'abord la liste des numéros de fax.

SELECT Fax FROM Customer 
WHERE Fax IS NOT NULL;

Résultat :

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 

Maintenant, voici ce qui se passe si j'essaie de les additionner.

SELECT sum(Fax) 
FROM Customer;

Résultat :

701.0 

Dans ce cas, il semble avoir ajouté tous les préfixes.

Voici ce qui se passe si j'utilise sum() sur une colonne de chaînes.

SELECT sum(ProductName) 
FROM Products;

Résultat :

0.0

Le mot-clé DISTINCT

Vous pouvez ajouter le DISTINCT mot-clé pour n'ajouter que des valeurs distinctes. Pour ce faire, utilisez sum(DISTINCT X)X est le nom de la colonne.

Voir Comment ajouter uniquement les valeurs distinctes avec SQLite Sum() pour un exemple.