2016-11-28 36 views
0

我試圖從統計表中獲得每位客戶最後一天的最後一條記錄。 我想選擇最後一天銷售量最大的顧客。從所有客戶中選擇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的:客戶

+0

可否請您添加模型聲明? 爲了使你的第一個查詢工作,你應該加入。所以第二。 – marmeladze

+0

你的'Customer'和'Statistic'模型之間有'has_many'' belongs_to'關係嗎? – sa77

+0

對。客戶has_many:統計和統計belongs_to:客戶 –

回答

1
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是另一個鏈接,它可以查找每個組的最新記錄。

+0

哇,這太棒了!謝謝! –

相關問題