SQLite
 sql >> база данни >  >> RDS >> SQLite

Как работи SQLite Sum().

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() за пример.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ListView не показва правилните изображения, които са в drawable според името им в sqlite

  2. Как да получите достъп и да актуализирате Sqlite db файл, съхранен локално [папка с активи] във файл на проекта, използвайки cordova

  3. Трябва ли да има един SQLiteOpenHelper за всяка таблица в базата данни?

  4. Как работи функцията JulianDay() в SQLite

  5. SQLite Създаване на изглед