2013-06-15 2 views
0

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

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; 
} 

Но вышеприведенная функция просто дает мне вместо этого общее число столбцов в таблице. Как я могу изменить эту функцию, чтобы она возвращала общее значение столбца?

+0

Вы пропустили columntotal + = c.getFloat (0); – Blackbelt

+0

Неплохо, ответ потому, что columnindex, который я выбрал для 'c.getFloat (0);', является 0-м индексом, который является 'KEY_RPI', а не столбцом, из которого я хотел бы подвести итоги. Это должно быть 'c.getFloat (3)' whic is '' sum ("+ KEY_RNP +") "' –

ответ

0

Совокупные функции не могут использоваться с простыми столбцами, если только простые столбцы не указаны в предложении GROUP BY. Либо обеспечить groupBy параметр или удалить все столбцы из запроса, за исключением sum(KEY_RNP)

EDIT: SQLite фактически позволяет агрегатные запросы без GROUP BY пункта, но результаты для неагрегированных столбцов выбраны случайным образом и не являются особенно полезными.

Если инструкция SELECT представляет собой агрегированный запрос без предложения GROUP BY, то каждое агрегированное выражение в результирующем наборе оценивается один раз по всему набору данных. Каждое неагрегатное выражение в наборе результатов оценивается один раз для произвольно выбранной строки набора данных. Для каждого неагрегатного выражения используется одна и та же произвольно выбранная строка. Или, если набор данных содержит нулевые строки, то каждое неагрегатное выражение оценивается по строке, состоящей полностью из значений NULL.

Смежные вопросы