2016-10-16 2 views
0

Я пытаюсь получить sum похожих предметов в своих строках в sqlite.сумма чисел для данного столбца в базе данных sqlite

Например, все значения х, все значения для у и все значения для г. Я знаю, как использовать предложение WHERE в моем запросе, но проблема заключается в том, что для этого требуется сравнить значения с другим параметром. Например, запрос, как это:

select sum(number_column) from your_table where number_column = 'some_number' 

Из вышесказанного, я не имею 'some_number' сравнить с. Поэтому мне нужен способ добавить все значения для каждой подобной строки, вроде как группировать их вместе.

enter image description here

Так что я бы в конечном итоге с чем-то вроде:

x 25 
y 24 
z 16 

Возможно ли это? Любые предложения приветствуются.

EDIT: Я попробовал это после того, как предложение Кристиана:

private void getSumOfGroupedTime() { 
 
     SQLiteDatabase db = this.getReadableDatabase(); 
 
     Cursor c = db.rawQuery("SELECT " + KEY_CREATED_AT_AM_PM + ",sum(quantity) as sum FROM " + TABLE_SALES 
 
       + " GROUP BY " + KEY_CREATED_AT_AM_PM, null); 
 
     c.moveToFirst(); 
 
     double i = c.getDouble(0); 
 
     Log.d("sum_values_", String.valueOf(i)); 
 
     c.close(); 
 
    } 
 
But it returns 1 for the three similar items i added in which each of these items have 1 as quantity. I expected 3. I'm i doing it wrong?

+0

что имя столбца, который содержит х, у, г? – Cristian

+0

Это колонка строки даты, KEY_CREATED_AT –

+0

взгляните на мое обновление – Cristian

ответ

1

Предполагая, что у вас есть таблица, которая имеет следующую структуру:

+----------------+--------+ 
| KEY_CREATED_AT | number | 
+----------------+--------+ 
| a    | 132 | 
| e    | 264 | 
| f    | 142 | 
| x    | 132 | 
| y    | 122 | 
| z    | 112 | 
+----------------+--------+ 

Для того, чтобы иметь сумма этих отдельных значений, вы должны использовать пункт group by

Так что запрос будет выглядеть так:

SELECT KEY_CREATED_AT,sum(number) as sum FROM table_name 

GROUP BY KEY_CREATED_AT 

Пример здесь: sqlfiddle

private void getSumOfGroupedTime() { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor c = db.rawQuery("SELECT " + KEY_CREATED_AT_AM_PM + ",sum(quantity) as sum FROM " + TABLE_SALES 
      + " GROUP BY " + KEY_CREATED_AT_AM_PM, null); 
    try { 
     while (c.moveToNext()) { 
      Double sum = c.getDouble(1); 

      Log.d("Sum is: " + sum); 
     } 
    } finally { 
     c.close(); 
    } 

} 
+0

спасибо за ваше предложение, я добавил свою попытку на редактирование выше, см. –

+1

Удивительный, работал как шарм –

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