2011-09-13 13 views
2

カラムがSQLiteテーブル(OrderTable)にあります。私は総価格を持つことができるように、価格列にすべての値を追加したいと思います。例えば、価格欄についてはSQLiteの同じ列のすべての要素を追加

は、3つの値があります。

150.00 
250.00 
300.00 

はどのようにしてSQLiteのクエリを使用して合計金額(700.00)を得ることができますか?

答えて

4

合計(X)ここで、xは列名です。 Clickここでsqliteの数学関数について知りたい

SELECT合計(価格)AS TOTAL_PRICE FROM OrderTable; // //は、int型の値reference

から

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 

を発生しますOrderTable FROM TOTAL_PRICE AS float値

SELECT SUM(価格)となりますsum()およびtotal()集計関数は、グループ内のNULL値でないすべての の合計を返します。次いで

ない非NULL入力行 がない場合の和は、())(NULLが、トータルリターン0.0を返します。

NULLは、通常、無行の合計が、 SQL標準に役立つ結果は、それを必要とされていないとSQLiteのは、同じ方法でそれをしないように、他のほとんどのSQLデータベースエンジンは であるために)(そのように 合計を実装します互換性があります。非標準のtotal()関数は、として提供され、SQL言語でこの設計上の問題を回避する便利な方法です。

total()の結果は、常に浮動小数点値です。 の結果NULL以外の入力がすべて整数の場合、sum()は整数値です。 sum()への のいずれかの入力が整数でもNULLでもない場合、sum()は の浮動小数点値を返します。これは真の和の近似値になります。

すべての入力が の整数またはNULLで、計算が の間の任意のポイントで整数オーバーフローが発生した場合、Sum()は「整数オーバーフロー」例外をスローします。 Total()は整数オーバーフローを起こすことはありません。

+0

私はたぶん 'sum'を標準としていますので、標準SQLを使うのは良い習慣です。 'insert into OrderTable values(3.14)'も含めると、 'sum'から浮動小数点値を取得します。 –

+0

これは非常に明白です。int + floatを追加することで浮動小数点値が得られます。 –

+0

しかし、SQLiteの緩いタイプのシステムでのみ、ほとんどのDBは浮動小数点値に不平を言うか、静かに整数に切り捨てます。そして、あなたは 'total'と' sum'が異なるタイプを返すことに注目しました。 –

関連する問題