SQLite sum()
функцията връща сумата от всички стойности, различни от NULL в група.
Ако няма стойности, различни от NULL, тогава той връща NULL.
Тази функция основно ви позволява да сумирате всички стойности в набор от резултати или таблица.
Пример
Ето пример за демонстриране на използването му.
SELECT sum(Price) FROM Products;
Резултат:
738.22
Този пример вероятно е безсмислен, ако не можете да видите действителните стойности в таблицата.
Ето заявка, която връща всички редове в тази таблица.
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
Така че sum()
функцията просто добави всички стойности в Цена колона.
Забележете, че цената на последния ред е NULL. Това е добре. sum()
функцията просто добавя всички стойности, различни от NULL.
NULL стойности
Ако няма стойности, различни от NULL, тогава резултатът е NULL.
SELECT sum(Price)
FROM Products
WHERE ProductId = 5;
Резултат:
(Това е умишлено празно, защото връща NULL).
Това е различно от това как SQLite total()
функцията се занимава с NULL стойности (връща 0.0). И двете sum()
и total()
направете същото, с изключение на тази разлика.
По-малък набор от резултати
Първият пример добави всички редове в таблицата. Но не е задължително да е цялата маса. Както се вижда в примера „NULL“, можете също да използвате WHERE
клауза за добавяне на подмножество от стойности в таблицата.
Ето още един пример, който използва WHERE
клауза.
SELECT sum(Price)
FROM Products
WHERE ProductId < 3;
Резултат:
528.95
Този път добавя стойности, различни от NULL, така че получавам резултат, различен от NULL.
Ето още един, който филтрира по същата колона, която добавям.
SELECT sum(Price)
FROM Products
WHERE Price > 100;
Резултат:
648.95
Нецелочислени входове
Ако даден вход не е нито цяло число, нито NULL, тогава sum()
връща стойност с плаваща запетая, която може да е приближение до истинската сума.
В такива случаи може да получите някои неочаквани резултати.
По-долу е даден пример, който се опитва да добави куп номера на факс.
Първо, нека разгледаме списъка с номера на факсове.
SELECT Fax FROM Customer
WHERE Fax IS NOT NULL;
Резултат:
Fax ------------------ +55 (12) 3923-5566 +420 2 4172 5555 +55 (11) 3033-4564 +55 (11) 3055-8131 +55 (21) 2271-7070 +55 (61) 3363-7855 +1 (780) 434-5565 +1 (604) 688-8756 +1 (650) 253-0000 +1 (425) 882-8081 +1 (212) 221-4679 +1 (408) 996-1011
Ето какво се случва, ако се опитам да ги събера.
SELECT sum(Fax)
FROM Customer;
Резултат:
701.0
В този случай изглежда, че е добавил всички префикси.
Ето какво се случва, ако използвам sum()
върху колона от низове.
SELECT sum(ProductName)
FROM Products;
Резултат:
0.0
Ключовата дума DISTINCT
Можете да добавите DISTINCT
ключова дума, за да добавите само различни стойности. За да направите това, използвайте sum(DISTINCT X)
където X
е името на колоната.
Вижте как да добавите само отделните стойности с SQLite Sum() за пример.