2011-09-13 15 views
2

我在我的SQLite表(OrderTable)中有價格列。我想在價格列中添加所有值,以便我可以獲得總價。在SQLite中添加同一列的所有元素

例如價格列有3個值:

150.00 
250.00 
300.00 

我怎樣才能使用SQLite查詢總量(700.00)?

回答

4

total(X)其中x是列名。 Click在這裏瞭解更多關於sqlite中的數學函數。

選擇合計(價格)AS TOTAL_PRICE FROM OrderTable; //將導致浮點值

SELECT SUM(價格)AS TOTAL_PRICE FROM OrderTable //將導致int值

樣品

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 

reference

sum()total()集合函數返回組中所有非空值的 的總和。

如果沒有非空輸入行 然後總和()返回NULL但總()返回0.0。

NULL通常不是沒有行的總和,但一個有用的結果 SQL標準要求它和其他大多數SQL數據庫引擎實現 總和()的方式,使SQLite的確實它以同樣的方式在爲了 兼容。非標準的total()函數以SQL語言中解決此設計問題的便捷方式提供。

total()的結果總是一個浮點值。 sum()的結果是一個整數值,如果所有非NULL輸入都是整數。如果sum()中的任何 輸入既不是整數也不是NULL,則sum()返回一個浮點值,該值可能是真實和的近似值。

如果所有輸入爲 整數或NULL,並且在計算過程中發生在 期間的任何點,則Sum()將拋出「整數溢出」異常。 Total()永遠不會引發整數溢出。

+0

我可能會用'sum'作爲標準,使用標準SQL是一個好習慣。如果您也包含「insert into OrderTable values(3.14)',那麼您會從'sum'中得到一個浮點值。 –

+0

是的,這是非常明顯的,通過添加int + float會給你浮動值。 –

+0

儘管只有SQLite的鬆散類型系統,但大多數DB都會抱怨浮點值或者將其靜默截斷爲整數。你確實注意到'total'和'sum'返回不同的類型。 –

相關問題