Android:如何汇总SQLite数据库中的所有列并返回1个单个变量

use*_*786 7 java database sqlite android sum

我的目标是对数据库中的所有列求和并返回变量'total'= x amount.

例:

column - food | taxi | clothes | sports 
          2       3      4         5
          6       8      0         12
          11      10     7         2
Run Code Online (Sandbox Code Playgroud)

因此,总数将等于= 70

我最初的想法是对各个列进行求和,最后将它们加在一起作为汇总单个列的示例:

public Cursor sumFoodColumn(){
    Cursor c = db.query(true, DATABASE_TABLE, ALL_KEYS, KEY_FOOD + "=?", new String[]{"sum(food)" + KEY_FOOD}, null, null, null, null);
    if (c !=null) {
        c.moveToFirst();
    }
    return c;
}
Run Code Online (Sandbox Code Playgroud)

但我觉得这会有点费力,因为我的数据库中有13列,有更好的方法吗?最好只有1个查询.

Fan*_*mas 6

您可以运行此查询:

Cursor c = db.rawQuery("SELECT Sum(food) + Sum(taxi) + Sum(clothes) + Sum(sports) AS myTotal FROM " + DATABASE_TABLE, null);
Run Code Online (Sandbox Code Playgroud)

代替

Cursor c = db.query(true, DATABASE_TABLE, ALL_KEYS, KEY_FOOD + "=?", new String[]{"sum(food)" + KEY_FOOD}, null, null, null, null);
Run Code Online (Sandbox Code Playgroud)

得到你的总数

Cursor c = sumFoodColumn();
int total = c.getInt(c.getColumnIndex("myTotal"));
Run Code Online (Sandbox Code Playgroud)