Ruby on rails Ruby循环创建一个不同计数的数组

Ruby on rails Ruby循环创建一个不同计数的数组,ruby-on-rails,ruby,loops,distinct,Ruby On Rails,Ruby,Loops,Distinct,我试图每天创建一个计数数组。我希望计数仅为不同的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)).

我试图每天创建一个计数数组。我希望计数仅为不同的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
    }
@unique\u count\u array\u by\u day=[]
15.1倍{i}
bar=Model.select(“DISTINCT(uid)”)。其中(:created_at=>(Time.now.start_of_day-i.days)…(Time.now.start_of_day-(i-1.days)).count()
@按天(Time.now.beging_of_day-i.days)…(Time.now.beging_of_day-(i-1.days)).count()计算的唯一_计数_数组

@unique_count_array_by_day如果您只需要一个不同ID的列表,您只需删除循环:

@unique_uids = Model.select("DISTINCT(uid)").all
如果要获取uid首次出现的日期,可以执行以下操作:

@unique_uids_with_first_dates = Model.find(:select => 'uid, min(created_at)', :group => 'uid')
(未经测试,因此不确定是否按原样工作,但基本上就是这样做的)


不确定这是否完全回答了您的问题,我对“总体差异”有点困惑。

如果您只需要一个不同ID的列表,您应该删除循环:

@unique_uids = Model.select("DISTINCT(uid)").all
如果要获取uid首次出现的日期,可以执行以下操作:

@unique_uids_with_first_dates = Model.find(:select => 'uid, min(created_at)', :group => 'uid')
(未经测试,因此不确定是否按原样工作,但基本上就是这样做的)


不确定这是否完全回答了您的问题,我对“整体差异”有点困惑。

什么是“整体差异uid”意思是?你让我对你想要什么和你得到什么感到困惑。你能给我们举个例子吗?好的,当然。假设有两条记录,都使用相同的“uid”。一条记录是昨天的,第二条是今天的。有了这段代码,数组的输出将是[1,1],而不是[1,0](有一个2.2倍的循环)。它应该是[1,0]因为“uid”在昨天是不同的,但今天不是。哦,那么问题更像是“如何获得以前从未见过的uid的每日计数”?仅仅回顾15天是不够的,因为你没有考虑几天前出现的uid。好的观点。这是真正的问题,是的,你是对的,它需要回顾。这看起来像是关于Rails的。让我知道它是否使用了其他框架。什么是“独特的uid的总体”意思是?你让我对你想要什么和你得到什么感到困惑。你能给我们举个例子吗?好的,当然。假设有两条记录,都使用相同的“uid”。一条记录是昨天的,第二条是今天的。有了这段代码,数组的输出将是[1,1],而不是[1,0](有一个2.2倍的循环)。它应该是[1,0]因为“uid”在昨天是不同的,但今天不是。哦,那么问题更像是“如何获得以前从未见过的uid的每日计数”?仅仅回顾15天是不够的,因为你没有考虑几天前出现的UID。好的观点。这是真正的问题,是的,你是对的,它需要回顾。这看起来是关于Rails的。如果它使用了其他框架,请告诉我。