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

Comment fonctionne SQLite Total()

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