簡體   English   中英

獲取SQLite中列值的總和

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM