Dou*_*ell 4 sum ruby-on-rails-3
我想在表格中获得十几列的总和.
# 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
Run Code Online (Sandbox Code Playgroud)
有没有办法在一个查询中执行此操作?以上生成了十几个查询.
您可以通过手动覆盖这样的select值来执行某些操作,这将运行单个查询,将所有总和作为字段返回:
sums = entries.select("sum(a) as a, sum(b) as b, ....").first
tv[:a] = sums[:a]
tv[:b] = sums[:b]
# etc....
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1257 次 |
| 最近记录: |