gpt4 book ai didi

ruby-on-rails - 在 Rails3 中选择每天的平均不同值

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:09 26 4
gpt4 key购买 nike

不知道为什么这让我如此难过,但我不知道该怎么做。

我有一个包含 50 万个 session 的表,需要从一开始就获取每天不同 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。

查询应该是什么样子的?任何帮助表示赞赏 - 有一个思维障碍。

最佳答案

您可能需要处理分组功能,因为不清楚 startime 的确切存储格式是什么,但这应该适合您:

def self.average_users_per_day
self.from("(SELECT COUNT(DISTINCT mac) AS macs FROM #{self.quoted_table_name} GROUP BY DATE(startime)) AS counts").average("macs").to_f
end

刚刚使用 mysql 在类似的模式上进行了测试,似乎可以正常工作。

关于ruby-on-rails - 在 Rails3 中选择每天的平均不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14790294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com