SQLite има функция, наречена sum() и друга функция, наречена total() . И двете функции правят почти едно и също нещо – връщат сумата от всички стойности, различни от NULL в групата.
Но има фина разлика между тези две функции.
Разликата е в начина, по който обработват NULL входове.
Разликата
Ето къде се различават тези две функции.
Ако няма входни редове, различни от NULL:
sum()връща NULLtotal()връща 0.0
Пример
Ето пример за демонстриране на разликата между SQLite sum() и total() функции.
SELECT
sum(NULL),
total(NULL); Резултат:
sum(NULL) total(NULL) ---------- ----------- 0.0
Първата колона е празна, защото е NULL.
Защо разликата?
Причината да има две функции, които правят едно и също нещо, с изключение на тази разлика е, че sum() е напълно съвместим със стандартите. SQL стандартът изисква sum() функция връща NULL, когато нейният вход е NULL.
Връщането на NULL може да е съвместимо със стандартите, но не е особено полезно, ако очаквате число.
total() следователно функцията е предоставена като по-полезна алтернатива на sum() .
Можете да изберете коя функция предпочитате да използвате, в зависимост от това как искате функцията да работи с NULL стойности (и колко съвместими със стандартите предпочитате да бъдете).
Решението ви може да бъде повлияно и от това колко преносим искате да бъде кодът ви. sum() изглежда е по-често използвано име на функция в други основни СУБД.