Можно ли в ruby ​​на рельсах 3 получить суммы для нескольких столбцов в одном запросе? - PullRequest
4 голосов
/ 12 августа 2011

Я хочу получить суммы для десятка столбцов в таблице.

# result will be {:a => 340.5, :b => 21.8, ... }
# where :a has the sum of the :a column values
# entries is an ActiveRecord model, e.g. ScoreCard.where(:user => user)
def self.totals(entries)
  [:a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k, :m].inject({}) do |tv, col|
     tv[col] = entries.sum(col)
     tv
  end
end

Есть ли способ сделать это в одном запросе?Выше генерирует десяток запросов.

1 Ответ

5 голосов
/ 12 августа 2011

Вы могли бы сделать что-то с ручным переопределением значений select, как это, что бы выполнить один запрос, возвращающий все ваши суммы в виде полей:

sums = entries.select("sum(a) as a, sum(b) as b, ....").first
tv[:a] = sums[:a]
tv[:b] = sums[:b]
# etc....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...