[英]Getting sum total of column values in SQLite
我在SQLite中有一個具有以下結構的表:
String CREATE_TOTAL_PRICE = "CREATE TABLE " + TOTAL_PRICE + "(" + KEY_TPID + " INTEGER PRIMARY KEY," + KEY_TPRICE + " REAL" + ")";
我試圖得到列KEY_TPRICE的所有列值的總和。 我正在使用這種似乎有用的方法:
public int getTotalOfAmount() { SQLiteDatabase db = this.getReadableDatabase(); Cursor c = db.rawQuery("SELECT SUM(total_price) FROM " + TOTAL_PRICE, null); c.moveToFirst(); int i = c.getInt(0); c.close(); return i; }
但問題出現在顯示值時。
你看我的數據輸入為50.01,5.5
,當得到總和時,我得到55
,實際情況並非如此。
當我在外部運行查詢時,實際總數為55.51
。
我嘗試將REAL,INTEGER, FLOAT,DOUBLE
為我的列數據類型,但仍然如此
到底是什么讓我的數字更加完美? 請幫我提出建議。
您最好將價格保存為數據庫中的TEXT,並在計算總和時,將它們轉換為double或BigDecimal以獲得准確的結果。
將您的返回值更改為double
public int getTotalOfAmount() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery("SELECT SUM(total_price) FROM " + TOTAL_PRICE, null);
c.moveToFirst();
double i = c.getDouble(0);
c.close();
return i;
}
我認為你收到了55因為你正在讀它“int”
int i = c.getInt(0);
這就是它被“轉換”為int(55)的原因。
根據問題https://stackoverflow.com/a/17947203/4860513 ,似乎SUM()將返回與您正在閱讀的列的格式相同的數字。 所以,嘗試讀取是一個double / float並分享結果:
float i = c.getFloat(0);
double i = c.getDouble(0);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.