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() изглежда е по-често използвано име на функция в други основни СУБД.