Rails与hstore进行求和

时间:2015-05-29 16:51:49

标签: ruby-on-rails hstore

我有一个带有hstore列的表。我需要做的是sumarize特定hstore密钥的所有条目。

一条Stat记录如下:

 id: 2041,
 tenant_name: "isabela",
 totals:
 {"value1"=>"31",
 "value2"=>"21",
 "value3"=>"38",
 "value4"=>"28",
 "value5"=>"0"},
 created_at: Tue, 05 May 2015 23:31:01 UTC +00:00,
 updated_at: Tue, 05 May 2015 23:31:01 UTC +00:00>,

总计是hstore列。 我想要的是找到特定日期的每个记录值1的总和。 到目前为止,我得到了:

string = [];
dates.each do |date|
  count = Stat.where(created_at: DateTime.parse(date).midnight..DateTime.parse(date).midnight + 1.day))
  string.push(count)
end
//(dates = an array of dates)

有没有人知道如何做到这一点?

更新让它与之合作:

.sum("(totals->'value1')::integer")

1 个答案:

答案 0 :(得分:1)

你应该这样做:

sums = dates.map do |date|
  Stat.where(created_at: DateTime.parse(date).midnight..DateTime.parse(date).midnight + 1.day))
      .sum("totals->'value1'::integer")
end

sums现在保留每天所有记录的value1总和。