created_at iteration group_hits_per_iteration
--------------------------------------------------------------------
2019-11-08 08:14:05.170492 300 34
2019-11-08 08:14:05.183277 300 24
2019-11-08 08:14:05.196785 300 63
2019-11-08 08:14:05.333424 300 22
2019-11-08 08:14:05.549140 300 1
2019-11-08 08:14:05.576509 300 15
2019-11-08 08:44:05.832730 301 69
2019-11-08 08:44:05.850111 301 56
2019-11-08 08:44:05.866771 301 18
2019-11-08 08:44:06.310749 301 14
Здравствуйте. Моя цель - создать итоговую сумму значений в «group_hits_per_iteration» для каждого уникального значения в «столбце итерации», которая затем будет отображена с помощью chartkick.
Например, дляитерация 300 Я бы суммировал 34,24,63,22,1,15 на общую сумму 159, а затем повторял бы для каждой уникальной записи.
Код, который я включил ниже, работает и генерирует требуемый результатно это медленно и становится медленнее, чем больше данных считывается в базу данных.
Он создает хеш, который подается в чарткик.
hsh = {}
Group.pluck(:iteration).uniq.each do |x|
date = Group.where("iteration = #{x}").pluck(:created_at).first.localtime
itsum = Group.where("iteration = #{x}").pluck('SUM(group_hits_per_iteration)' )
hsh[date] = itsum
end
<%= line_chart [
{name: "#{@groupdata1.first.networkid}", data: hsh}
] %>
Я ищу другие способы решения этой проблемы, я думал о том, чтобы SQL выполнял тяжелую работу, а не выполнялрасчеты в рельсах, но не совсем уверены, как к этому приблизиться.
Спасибо за помощь.