なぜこれが私を困惑させたのかわかりませんが、それを行う方法がわかりません。
私は 50 万のセッションを持つテーブルを持っており、時間の初めから 1 日ごとに異なる MAC アドレスの平均数を取得する必要があります。
私はこれを試しました:
def self.average_users_per_day
self.average("distinct mac", :group => Chronic.parse("starttime"))
end
(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
結果は常に 10 ではなく 20 です。
クエリはどのように見えるはずですか? どんな助けでも大歓迎です-マインドブロックを持っています。