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

SQLite Sum() vs Total() :Quelle est la différence ?

SQLite a une fonction appelée sum() et une autre fonction appelée total() . Les deux fonctions font à peu près la même chose - elles renvoient la somme de toutes les valeurs non NULL d'un groupe.

Mais il existe une différence subtile entre ces deux fonctions.

La différence réside dans la manière dont ils gèrent les entrées NULL.

La différence

Voici où ces deux fonctions diffèrent.

S'il n'y a pas de lignes d'entrée non NULL :

  • sum() renvoie NULL
  • total() renvoie 0.0

Exemple

Voici un exemple pour démontrer la différence entre le SQLite sum() et total() fonctions.

SELECT 
  sum(NULL),
  total(NULL);

Résultat :

sum(NULL)   total(NULL)
----------  -----------
            0.0        

La première colonne est vide, car elle est NULL.

Pourquoi la différence ?

La raison d'avoir deux fonctions qui font la même chose à l'exception de cette seule différence est que, sum() est entièrement conforme aux normes. La norme SQL exige que le sum() fonction renvoie NULL lorsque son entrée est NULL.

Retourner NULL peut être conforme aux normes, mais ce n'est pas particulièrement utile si vous attendez un nombre.

Le total() la fonction a donc été fournie comme une alternative plus utile à sum() .

Vous pouvez choisir la fonction que vous préférez utiliser, en fonction de la manière dont vous souhaitez que la fonction traite les valeurs NULL (et de la conformité aux normes que vous préférez).

Votre décision peut également être influencée par la portabilité de votre code. sum() semble être le nom de fonction le plus couramment utilisé dans d'autres SGBD majeurs.