如何获取同一日期的SQLite列的总和

时间:2018-09-17 09:58:42

标签: java android sqlite

我有一个包含4列的SQLite数据库:

  

COL1 = ID

     

COL2 = DATE

     

COL3 = DESCRIPTION

     

COL4 = AMOUNT

我之前问过this question,并且有一种方法来获取金额列的总和。像这样:

public long get_tot_inc() {
    long rv = 0;
    String[] columns = new String[]{"sum(" + COL4 + ")"};
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor csr = db.query(TABLE_NAME, columns, null, null, null, null, null);
    if (csr.moveToFirst()) {
        rv = csr.getLong(0);
    }
    csr.close();
    return rv;
}

但是现在我正在显示一个基于日期的ListView,该日期是通过使用类似以下代码的字符串提供的:

public Cursor get_amo_by_date(String dat) {
    SQLiteDatabase db = this.getWritableDatabase();
    String query = "SELECT " + COL4 + " FROM " + TABLE_NAME +
            " WHERE " + COL2 + " = '" + dat + "'";
    return db.rawQuery(query, null);
}

我需要获取这个新ListView的总和。如果可能的话,请给我一种方法,方法是通过int检索数据,然后在Activity中进行计算。尽管如果SQLite更容易,请给我。

2 个答案:

答案 0 :(得分:3)

我希望这对您有用

public int calculateAmountByDate(String dat)
    {
        int sum=0;
        Cursor cur = db.rawQuery( "SELECT SUM( " + COL4 + ") FROM " + TABLE_NAME +
                " WHERE " + COL2 + " = '" + dat + "'", null);
        if(cur.moveToFirst())
        {
            sum= cur.getInt(0);
        }
        return sum;
    }

它将返回整数值。

int amount=calculateAmountByDate("Pass your Date here");

在视图中显示该值。

答案 1 :(得分:-1)

public Cursor get_amo_by_date(String dat) {
    SQLiteDatabase db = this.getWritableDatabase();
    String query = "SELECT " + COL4 + " FROM " + TABLE_NAME +
            " WHERE " + COL2 + " = '" + dat + "'";
    return db.rawQuery(query, null);
}

这是我想的