2015-02-05 48 views
0

我正在使用groupdate gem將記錄與日期/時間分組。我想分組記錄並選擇具有子句的用戶,然後用日期/月/時間對記錄進行分組。但它沒有給出我想要的正確結果。 如:顯式組和帶有`groupdate`的子句gem

User.group_by_month(:created_at).count # gives proper result but 
User.joins("LEFT JOIN devices ON devices.user_id=users.id").group("users.id").having("COUNT(devices.id)=0").count #gives all users in hash while i want only count for the months. 

我用這對顯示使用chartkick寶石圖表。

任何幫助將不勝感激。

+0

試'User.joins( 「LEFT JOIN ON devices.user_id = users.id設備」)。組( 「users.id」)。具有( 「COUNT(devices.id)= 0」)。 count.length' – Sontya

+0

我不能將這個結果轉發到chartckick,我寫的代碼對所有人都是通用的。 – jbmyid

回答

0

最後,我使用2個查詢得到了解決方法。

user_ids = User.joins("LEFT JOIN devices ON users.id=devices.user_id").group("users.id").having("count(devices.id)=0").pluck("users.id") 

User.where(id: user_ids).group_by_month("created_at").count 

另一種方法是在子查詢中包含第一個查詢。

User.where("id IN (SELECT u.id FROM users u LEFT JOIN devices ON u.id=devices.user_id GROUP BY us.id HAVING count(devices.id)=0)").group_by_month("created_at").count