sqlite сумма значений с той же даты и возврата в 1 строку - PullRequest
2 голосов
/ 24 апреля 2011

Я пишу приложение для Android, в котором хранятся даты тренировок и сожженные калории. Ниже приведен пример данных в моей таблице: это возвращается:

SELECT month, day, calories FROM workouts ORDER BY year ASC, month ASC, day ASC LIMIT 12;

(month | day | calories)
3|2|714
3|3|945
3|4|630
3|10|446
3|16|396
3|20|255
3|22|108
3|23|112     
3|23|169
3|23|2160

код, который я написал для вышеупомянутого:

  public Cursor getLastTwelveDays(){
  Cursor c;
  String[] s = {KEY_MONTH, KEY_DAY, KEY_CALORIES};
  String order = KEY_YEAR + " ASC, " + KEY_MONTH + " ASC, " + KEY_DAY + " ASC LIMIT 12" ;
  c = db.query(WORKOUT_TABLE, s, null, null, null, null, order);
  return c;
}

Я хотел бы объединить строки с одним и тем же днем ​​и месяцем в одну строку следующим образом:

3|2|714
3|3|945
3|4|630
3|10|446
3|16|396
3|20|255
3|22|108
3|23|2441    (112 + 169 + 2160)    

Кроме того, было бы неплохо, если бы его было легко использовать с функцией запроса Android.

Заранее спасибо.

Ответы [ 3 ]

8 голосов
/ 24 апреля 2011

То, что вы ищете, это группировка по предложению. Используйте метод SUM (), чтобы получить общее количество калорий для каждой даты. Я считаю, что предложение group by должно идти перед предложением ORDER BY.

ВЫБЕРИТЕ месяц, день, СУММА (калории) ИЗ РАЗРАБОТКИ ГРУППЫ ПО месяцу, дню

0 голосов
/ 24 апреля 2011

Не видя вашей схемы - посмотрите также на SUM и GROUP BY.

0 голосов
/ 24 апреля 2011

Звучит так, как будто вы хотите подзапрос (т. Е. Один запрос для вычисления суммы дневных калорий внутри другого запроса, который получает общее количество калорий в день).

Попробуйте найти примеры запросов QUERY и подзапроса.Возможно, функция запроса позволяет вам передать необработанный запрос, чтобы выполнить более сложный запрос, который вы описываете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...