Я ищу лучший способ получить данные из таблицы баллов. Мне нужно добавить сумму для каждого столбца и добавить ее в объект json.Как оптимизировать сумму для каждого столбца db. Ruby on Rails
Цель состоит в том, чтобы сделать объект JSON, как это ...
data = {
labels: ['M', 'Tu', 'W', 'Th', 'F', 'Sa', 'Su'],
series: [
[15, 2, 4, 35, 0, 20, 40] // The sum each day from the column NO_OF_ATTEMPTS
]
}
... Из этой таблицы базы данных с именем "десятки" ...
ID | NO_OF_SUCCEEDED | NO_OF_FAILED | NO_OF_ATTEMPTS | UPDATED_AT
---- | --------------- | ------------ | -------------- | -------------------
86 | 19 | 3 | 22 | 2016-09-07 22:25:07
87 | 18 | 2 | 20 | 2016-09-07 22:25:56
88 | 31 | 10 | 41 | 2016-12-01 18:20:10
89 | 14 | 0 | 14 | 2016-09-07 22:21:45
90 | 16 | 0 | 16 | 2016-09-07 22:24:09
91 | 17 | 3 | 20 | 2016-09-07 22:43:45
Банкоматы я написал что-то вроде это ...
data = {
labels: [
24.hours.ago.strftime("%A"),
Time.now.strftime("%A")
],
series: [
[
current_user.scores.where(updated_at:
48.hours.ago..24.hours.ago).sum(:no_of_attempts),
current_user.scores.where(updated_at:
24.hours.ago..Time.now).sum(:no_of_attempts)
]
]
}
Этот код предназначен для каждого дня, чтобы получить сумму NO_OF_ATTEMPTS. 7 дней - 7 запросов к базе данных. Позже я также хочу добавить json-массив с NO_OF_FAILED и NO_OF_SUCCEEDED. Это означает 7 запросов для запроса 3 столбца = 21.
ВОПРОС: Возможно ли это сделать в одном единственном запросе или, по крайней мере, меньше.