从所有客户中选择Rails中的最后一条记录

我试图从统计表中获得每位客户最后一天的最后一条记录。 我想选择最后一天销售量最大的顾客。从所有客户中选择Rails中的最后一条记录

统计信息每小时生成一次,因此客户有多个统计信息,但我只需要最后一个统计信息。

我尝试了几个命令,我只是收到错误。

Statistic.where("created_at < ?",1.day.ago).select(:customer_id).distinct.order(created_at: :desc) 

Statistic.where("created_at < ?",1.day.ago).select(:customer_id).distinct.last 

是与勇气的最佳解决方案?或者我应该创建2个选择? 我不知道应该放置'sold_items'的位置。

这也可能是一个解决方案,但我不确定。

Customer.all.each do |customer| 

stats = customer.statistics.where("created_at < ?",Date.today).last

count = stats.sold_items if stats.sold_items > count

best = customer if count = stats.sold_items

end

型号: 客户的has_many:统计数据 - 统计belongs_to的:客户

回答:

Statistic.joins("inner join (select customer_id,max(created_at) as created_at from statistics group by customer_id) as stats2 on statistics.customer_id = stats2.customer_id and statistics.created_at = stats2.created_at").pluck("max(statistics.sold_items)") 

这会给你从谁卖的大部分项目的最后一天,到目前为止客户的最大销售的项目,

让我来引导你通过这个,

基本上,首先你需要每个客户的最新统计数据。那么您需要这些统计信息中的sold_items的maximum

所以嵌套查询(select customer_id,max(created_at) as created_at from statistics group by customer_id)是选择最大created_at为每一位客户,再查询外层的加盟实际statistics与这些结果,并只选择那些在过去的日期条件,其下跌。然后在结尾pluck("max(statistics.sold_items)")从这些结果中选择最大的sold_items。

HERE是另一个链接,它可以查找每个组的最新记录。

以上是 从所有客户中选择Rails中的最后一条记录 的全部内容, 来源链接: utcz.com/qa/263319.html

回到顶部