SQLite: получение всех значений в одном столбце

Я хочу создать запрос, который даст общее количество всех значений в одном столбце моей базы данных SQLite.

Я хочу, чтобы этот запрос находился внутри метода, который возвращает итоговое значение как int, чтобы затем я мог обработать его в рамках другого действия.

Как я могу это сделать?

Я уже создал аналогичные методы в моем вспомогательном классе базы данных (см. Ниже), но я не знаю, как реализовать запрос в SQLite, чтобы дать общее количество.

Декларация и создание базы данных в Databasehelper: (для столбца я хочу, чтобы общее значение было COL_MED)

public class DatabaseHelper extends SQLiteOpenHelper {

 // Database Version
 private static final int DATABASE_VERSION = 10;

 // Database Name
 private final static String DATABASE_NAME = "MeditationDatabase";

 // Contacts table name
 private static final String TABLE_SCORE = "scores";

 // Contacts Table Columns names
 private static final String COL_SESSION = "sessionid";
 private static final String COL_GAMETITLE = "game";
 private static final String COL_NAME = "name";
 private static final String COL_MED = "avgmeditation";
 private static final String COL_MAX = "maxmeditation";
 private static final String COL_AVGATT = "avgattention";
 private static final String COL_MAXATT = "maxattention";
 private static final String COL_SCORE = "score";
 private static final String COL_DATE = "date";

 /**
 * Constructor
 * 
 * @param context
 */
 public DatabaseHelper(Context context) {
 super(context, DATABASE_NAME, null, DATABASE_VERSION);
 }

 /**
 * Method that creates the database
 */
 @Override
 public void onCreate(SQLiteDatabase db) {

 String CREATE_TABLE_SCORE = "CREATE TABLE " + TABLE_SCORE + "(" + COL_SESSION
 + " STRING PRIMARY KEY, " + COL_GAMETITLE + " STRING, " + COL_NAME + " STRING, " + COL_MED + " INTEGER, "
 + COL_MAX + " INTEGER, " + COL_AVGATT + " INTEGER, " + COL_MAXATT + " INTEGER, " + COL_SCORE + " INTEGER, " + COL_DATE + " STRING " + ")";
 db.execSQL(CREATE_TABLE_SCORE);

 }

Потенциально похожий метод, который возвращает количество записей в БД:

public int getTotalGamesPlayed() {
 SQLiteDatabase db = this.getWritableDatabase();
 try {
 return (int)DatabaseUtils.queryNumEntries(db, TABLE_SCORE);
 } finally {
 db.close();
 }
}

РЕДАКТИРОВАТЬ:

Это правильный запрос:

String query = "SELECT SUM(COL_MED) FROM " + TABLE_SCORE;
1 ответ

Прочтите документацию; вы можете использовать либо sum() либо total().

Имя столбца не COL_MED; то есть имя символа, значением которого является имя столбца. Как и TABLE_SCORE, вам нужно будет вставить его значение в SQL-запрос:

int getSumOfAllAvgMeditations() {
 SQLiteDatabase db = getWritableDatabase();
 try {
 String sql = "SELECT TOTAL(" + COL_MED + ") FROM " + TABLE_SCORE;
 return (int)DatabaseUtils.longForQuery(db, sql, null);
 } finally {
 db.close();
 }
}

licensed under cc by-sa 3.0 with attribution.