我正在尝试每天创建一系列计数。我希望计数只是不同的uid(每天都不应该重置uid的“不同”)。
之前,我有:
@unique_count_array_by_day = []
15.times { |i|
bar = Model.select("DISTINCT(uid)").where(:created_at => (Time.now.beginning_of_day - i.days)..(Time.now.beginning_of_day - (i-1).days)).count()
@unique_count_array_by_day << bar
}
这并没有给我明显的uid整体,它给了我一天内独特的uid的数量。所以我拉出代码选择不同的uid的循环:
@unique_count_array_by_day = []
foo = Model.select("DISTINCT(uid)")
15.times { |i|
bar = foo.where(:created_at => (Time.now.beginning_of_day - i.days)..(Time.now.beginning_of_day - (i-1).days)).count()
@unique_count_array_by_day << bar
}
但是,这仍然会产生每天不同uid的计数,而不是数据表中第一次出现的不同的uid。
有关如何使用此功能的任何想法?
答案 0 :(得分:1)
如果您只想要一个不同ID的列表,您应该删除循环:
@unique_uids = Model.select("DISTINCT(uid)").all
如果你想获得uid首次出现的日期,你可以这样做:
@unique_uids_with_first_dates = Model.find(:select => 'uid, min(created_at)', :group => 'uid')
(未经测试,因此不确定它是否按原样运行,但这基本上就是这样做的方式)
不确定这是否完全回答了你的问题,我对“整体差异”感到有些困惑