不知道为什么这让我如此难过,但我不知道该怎么做。
我有一张有 50 万个会话的表,从一开始就需要每天获取不同 MAC 地址的平均数量。
我试过这个:
def self.average_users_per_day
self.average("distinct mac", :group => Chronic.parse("starttime"))
end
(使用 Chronic,因为 starttime 是一个带时区的字符串。尝试使用 DATE(“starttime)”)
通过大量数据,我得到了我认为正确的数字。直到我进行了一些测试并发现它实际上并没有对结果进行分组。
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。
查询应该是什么样子?任何帮助表示赞赏 - 有一个思维障碍。