我正在尝试从SQLITE中检索列的总和。我能够成功地获得它。 但是当我尝试仅检索10行的总和时,它会再次返回整列的总和。但查询似乎是正确的。
public String getUnitsForWeek(Context context) throws IOException {
DataBaseHelper dbHelper = new DataBaseHelper(context);
String query = "SELECT sum(UNITS) FROM SERVICE_TABLE order by id DESC limit 7";
return String.valueOf(dbHelper.getString(query));
}
dbHelper.getString方法是:
public int getString(String query) {
String mypath = DB_PATH + DB_NAME;
SQLiteDatabase database = SQLiteDatabase.openDatabase(mypath, null,
SQLiteDatabase.OPEN_READWRITE);
Cursor cursor = null;
int i;
cursor = database.rawQuery(query, null);
cursor.moveToFirst();
i= cursor.getInt(cursor.getColumnIndex(cursor.getColumnName(0)));
return i;
}
感谢。
答案 0 :(得分:8)
SUM
是一个聚合函数,它将来自多行的数据合并为一个。由于只有一个结果行,LIMIT
和ORDER BY
毫无意义。
要对最高UNITS
的7行求ID
,您可以使用子选择:
SELECT SUM(UNITS) FROM (SELECT UNITS FROM SERVICE_TABLE ORDER BY id DESC LIMIT 7);
答案 1 :(得分:3)
你不能做一个小小的选择吗?
SELECT sum(UNITS) FROM (SELECT UNITS FROM SERVICE_TABLE order by id DESC limit 7) s