sqlite суммирует значения с той же даты и возвращает в 1 строке

#android #sql #sqlite

#Android #sql #sqlite

Вопрос:

Я пишу приложение для 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.

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

Ответ №1:

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

ВЫБЕРИТЕ месяц, день, СУММУ (калорий) Из ГРУППЫ тренировок ПО месяцам, дням

Комментарии:

1. Поскольку месяц и день указаны в предложении GROUP BY, им не нужна агрегирующая функция, такая как SUM().

2. Проверьте этот веб-сайт для более подробного примера shokhirev.com/nikolai/abc/sql/sql1.html

3. Большое спасибо! Сработало как по волшебству.

Ответ №2:

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

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

Ответ №3:

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