0

特定のテーブルのすべての列の値を合計し、合計を double として取得したいと考えています。これはそれを行うための私の現在の機能です

  public String sumAll() {
  float columntotal = 0;
    String[] columns = new String[] {KEY_RPI,
            KEY_RLP, KEY_RSK, "sum("+ KEY_RNP +")", KEY_RTP};
    Cursor c = mDb.query(PENGELUARAN_TABLE, columns, null, null, null,
            null, null);

    if (c != null) {
       c.moveToFirst();
      columntotal = c.getFloat(0);
      }
    String  sumtotal = Float.toString((float)columntotal);  
    return sumtotal;
}

しかし、上記の関数は、代わりにテーブル内の列の総数を提供するだけです。列の合計値を返すようにこれらの関数を変更するにはどうすればよいですか?

4

1 に答える 1

0

GROUP BY単純列が節に含まれていない限り、集約関数を単純列で使用することはできません。パラメータを指定するかgroupBy、クエリから次を除くすべての列を削除しますsum(KEY_RNP)

編集: SQLiteは実際には句なしで集計クエリを許可GROUP BYしますが、非集計列の結果はランダムに選択され、特に有用ではありません。

SELECT ステートメントが GROUP BY 句のない集計クエリである場合、結果セット内の各集計式はデータセット全体で 1 回評価されます。結果セット内の各非集計式は、データセットの任意に選択された行に対して 1 回評価されます。各非集計式には、任意に選択された同じ行が使用されます。または、データセットに含まれる行が 0 の場合、各非集計式は、完全に NULL 値で構成される行に対して評価されます。

于 2013-06-15T17:33:07.790 に答える