不知道为什么这让我如此难倒,但我无法弄清楚如何去做。在Rails3中每天选择平均不同的值3
我有一个包含五十万个会话的表,并且需要从一开始就获得每天不同的mac地址的平均数。
我已经试过这样:
def self.average_users_per_day
self.average("distinct mac", :group => Chronic.parse("starttime"))
end
(使用慢性因为开始时间与时区的字符串..有没有和DATE(“开始时间)试过)
在大的数据集,我得到了我认为是正确的身影,直到我进行了一些测试,发现它不是真正的分组结果。
it "finds the average sessions per day", :focus => true do
10.times do
FactoryGirl.create(:session, starttime: Time.now, mac: (1..6).map{"%0.2X"%rand(256)}.join(":"))
end
10.times do
FactoryGirl.create(:session, starttime: Time.now - 1.days, mac: (1..6).map{"%0.2X"%rand(256)}.join(":"))
end
Session.average_users_per_day.to_i.should eq 10
end
结果总是20而不是10
查询应该是什么样子?任何帮助表示赞赏 - 有一个思想障碍。
您希望mac在前10次与下一次10次会话相同? – 2013-02-09 17:10:40
不,应该有10个不同的mac。每天10次平均课程。我失去了它?! – simonmorley 2013-02-09 19:24:03
我想知道为什么你在测试中没有得到错误。你的average_users_per_day实现应该返回一个散列,所以调用.to_i给它应该会产生一个错误 – jvnill 2013-02-10 03:24:28