从所有客户中选择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