Добавление всех элементов одного столбца в SQLite - PullRequest
2 голосов
/ 13 сентября 2011

У меня есть Цена столбца в моей таблице SQLite (OrderTable). Я хочу добавить все значения в столбце «Цена», чтобы получить итоговую цену.

Например, столбец Цена имеет 3 значения:

150.00  
250.00  
300.00 

Как я могу получить общую сумму ( 700.00 ), используя запрос SQLite?

1 Ответ

4 голосов
/ 13 сентября 2011

всего (X) где x - имя столбца. Нажмите здесь, чтобы узнать больше о математической функции в sqlite.

ВЫБЕРИТЕ всего (Цена) КАК TOTAL_PRICE ОТ ОТ OrderTable; // приведет к значению с плавающей запятой

SELECT sum (Price) AS TOTAL_PRICE FROM OrderTable // приведет к значению int

SAMPLE

CREATE TABLE OrderTable (Price Integer);
INSERT INTO OrderTable VALUES (1);
INSERT INTO OrderTable VALUES (2);
INSERT INTO OrderTable VALUES (3);
INSERT INTO OrderTable VALUES (NULL);  // NULL

SELECT total(Price) AS TOTAL_PRICE FROM OrderTable;  // output 6.0

SELECT sum(Price) AS TOTAL_PRICE FROM OrderTable     // output 6

Из ссылки

sum () и total () агрегатные функции возвращают сумму всех не-NULL значения в группе.

Если нет входных строк, отличных от NULL , то sum () возвращает NULL, а total () возвращает 0.0.

NULL обычно не является полезным результатом для суммы без строк, но стандарт SQL требует этого, и большинство других механизмов баз данных SQL реализуют sum () таким образом, чтобы SQLite делал это таким же образом, чтобы быть совместимым,Нестандартная функция total () предоставляется в качестве удобного способа обойти эту проблему проектирования на языке SQL.

Результатом total () всегда является значение с плавающей запятой.Результатом sum () является целочисленное значение, если все ненулевые входные значения являются целыми числами.Если какой-либо вход для sum () не является ни целым числом, ни NULL, то sum () возвращает значение с плавающей запятой, которое может быть приближением к истинной сумме.

Sum () вызовет исключение "переполнение целочисленного типа"если все входные данные являются целыми числами или NULL и целочисленное переполнение происходит в любой точке во время вычисления.Total () никогда не генерирует целочисленное переполнение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...