假设我有一个包含架构的数据库:
A - String
B - String
C - Int
D - Int
数据库是
A | B | C | D
------------------
'F' | 'a' | 1 | 2
'F' | 'a' | 1 | 4
'F' | 'b' | 2 | 4
'Z' | 'a' | 3 | 7
'Z' | 'b' | 4 | 3
'Z' | 'a' | 6 | 5
我想要的是
a 2 6
的 B'/强> 2 4
a 9 12
的 B'/强> 4 3
基本上,按A
分组,然后按B
分组,SUM(C), SUM(D)
分组。我怎么能在ActiveRecord中做到这一点?
答案 0 :(得分:0)
以下是AR解决方案:
things = Thing.select('a, b, sum(c) as sum_c, sum(d) as sum_d').group(:a, :b)
things.each do |thing|
puts "#{thing.a} / #{thing.b} / #{thing.sum_c} / #{thing.sum_d}"
end
# F / a / 2 / 6
# F / b / 2 / 4
# Z / a / 9 / 12
# Z / b / 4 / 3
您可以在AR类中动态创建属性(请参阅as sum_c
)。根据您的操作,使用直接SQL可能会更容易/更好。