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)
où X
est le nom de la colonne.
Voir Comment ajouter uniquement les valeurs distinctes avec SQLite Sum() pour un exemple.