显式组和具有`groupdate` gem的子句

时间:2015-02-05 06:47:23

标签: mysql ruby-on-rails chartkick

我正在使用groupdate gem将记录与日期/时间分组。我想对记录进行分组并选择具有having子句的用户,然后将记录与日期/月/时间分组。但它没有给出我想要的正确结果。 例如:

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 gem的图表。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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