我正在使用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的图表。
任何帮助将不胜感激。
答案 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