Dans SQLite, le total()
La fonction renvoie la somme de toutes les valeurs non NULL d'un groupe.
S'il n'y a pas de valeurs non NULL, alors il renvoie 0.0.
Cette fonction est similaire à la sum()
fonction, sauf dans la façon dont elle gère les entrées NULL. Lorsqu'il n'y a pas de valeurs non NULL, alors sum()
renvoie NULL (au lieu de 0.0 comme le total()
fonction renvoie).
Exemple
Considérez le tableau suivant.
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
Nous pouvons utiliser le total()
fonction pour obtenir un total des prix.
SELECT total(Price) FROM Products;
Résultat :
738.22
Même si le prix de la dernière ligne est NULL, le total()
La fonction peut gérer cela, car elle ajoute toutes les valeurs non NULL et ignore la valeur NULL.
Toutes les valeurs NULL
S'il n'y a pas de valeurs non NULL, le résultat est 0.0.
SELECT total(Price)
FROM Products
WHERE ProductId = 5;
Résultat :
0.0
C'est là que total()
et sum()
différer. Dans ce cas, sum()
aurait retourné NULL.
Le total()
La fonction renvoie toujours une valeur à virgule flottante.
Gardez à l'esprit que cela n'est pas conforme au standard SQL. Si vous souhaitez utiliser un code conforme à la norme, utilisez sum()
.
Obtenir le total d'un sous-ensemble
Voici un autre exemple qui utilise un WHERE
clause pour retourner un sous-ensemble de la table.
SELECT total(Price)
FROM Products
WHERE ProductId > 2;
Résultat :
209.27
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 total(Price)
FROM Products
WHERE Price < 150;
Résultat :
348.77