У меня есть статистика:
Stat(id: integer, points: float, user_id: integer, match_id: integer, team_id: integer)
Для модели матча:
Match(id: integer, team_a_id: integer, team_b_id: integer)
Вот мой код:
stat= Stat
.group(:user_id)
.select("user_id, count(*) as matches_count, sum(points) as score")
.where.not(points: 0)
.where.not(match_id: nil)
stat.each do |f|
new_value = (f.sum_points.to_f / f.matches_count.to_f)
f.sum_points = new_value.round(2)
a << f
end
new_stat = a.sort_by(&:sum_points).reverse.first(10).flatten
Мне нужно изменитьзначение sum_points
для каждых данных, что если я получу много данных, так что потребуется время, есть ли способ минимизировать их?Что мне нужно, так это первый топ 10.