В SQLite, total()
функцията връща сумата от всички стойности, различни от NULL в група.
Ако няма стойности, различни от NULL, тогава той връща 0.0.
Тази функция е подобна на sum()
функция, с изключение на начина, по който обработва NULL входове. Когато няма стойности, различни от NULL, тогава sum()
връща NULL (вместо 0.0 като total()
функция се връща).
Пример
Помислете за следната таблица.
SELECT * FROM Products;
Резултат:
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
Можем да използваме total()
функция за получаване на общата сума на цените.
SELECT total(Price) FROM Products;
Резултат:
738.22
Въпреки че цената на последния ред е NULL, total()
функцията може да се справи с това, защото добавя всички стойности, различни от NULL, и игнорира стойността NULL.
Всички NULL стойности
Ако няма стойности, различни от NULL, тогава резултатът е 0.0.
SELECT total(Price)
FROM Products
WHERE ProductId = 5;
Резултат:
0.0
Това е мястото, където total()
и sum()
различават. В този случай sum()
би върнал NULL.
total()
функцията винаги връща стойност с плаваща запетая.
Имайте предвид обаче, че това не отговаря на стандарта SQL. Ако искате да използвате стандартен съвместим код, използвайте sum()
.
Вземете общата сума на подмножество
Ето още един пример, който използва WHERE
клауза за връщане на подмножество от таблицата.
SELECT total(Price)
FROM Products
WHERE ProductId > 2;
Резултат:
209.27
Този път добавя стойности, различни от NULL, така че получавам резултат, различен от NULL.
Ето още един, който филтрира по същата колона, която добавям.
SELECT total(Price)
FROM Products
WHERE Price < 150;
Резултат:
348.77