【问题标题】:SQLITE SUM and LIMIT don't seem to work togetherSQLITE SUM 和 LIMIT 似乎不能一起工作
【发布时间】:2013-09-11 12:50:59
【问题描述】:

我正在尝试从 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;

}

谢谢。

【问题讨论】:

    标签: android sql sqlite android-sqlite


    【解决方案1】:

    SUM 是一个聚合函数,它将多行数据合并为一个。由于只有一行结果,LIMITORDER BY 没有意义。

    要对ID 最高的 7 行求和 UNITS,您可以使用子选择:

    SELECT SUM(UNITS) FROM (SELECT UNITS FROM SERVICE_TABLE ORDER BY id DESC LIMIT 7);
    

    【讨论】:

      【解决方案2】:

      你不能做一个子选吗?

      SELECT sum(UNITS) FROM (SELECT UNITS FROM SERVICE_TABLE order by id DESC limit 7) s
      

      【讨论】:

      • +1 谢谢!我想这和拉阿尔托所说的一样。
      猜你喜欢
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      • 2013-07-06
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多