使用连接、Uniq 和 Group_by_month(:created_at)
Using Joins, Uniq and Group_by_month(:created_at)
你好,我又写下问题了
所以我有 3 个模型 'User' 'Companion' 'Task'
和
User. has_many: companions, has_many: tasks
Companion: belongs_to: user
Task: belongs_to: user
我需要的数据是用户的月度数据,以及有同伴的用户,最后还有谁订购了任务
所以我试图使用这个代码
User.group_by_month(:created_at).count
直到这里我才能够得到我所想的数据
User.joins(:companions).uniq.group_by_month(:created_at).count
还有我每月统计的有同伴但根本不起作用的用户数
那我还需要加入一个'Task',看看哪个用户有同伴,还订了一个任务
所以我希望看到的结果是
每月注册用户数
Aug, 2020 = > 300
有同伴的用户
Aug, 2020 = > 150
有同伴并订购任务的用户
Aug, 2020 = > 75
我需要唯一编号的用户拥有伙伴,以及拥有伙伴并且还订购了任务的用户
Uniq
适用于数组。对于 collection of records
你可以使用 distinct
.
检查:https://apidock.com/rails/v5.2.3/ActiveRecord/QueryMethods/distinct
这意味着您可以使用:
User.joins(:companions).distinct.group_by_month(:created_at).count
你好,我又写下问题了
所以我有 3 个模型 'User' 'Companion' 'Task'
和
User. has_many: companions, has_many: tasks
Companion: belongs_to: user
Task: belongs_to: user
我需要的数据是用户的月度数据,以及有同伴的用户,最后还有谁订购了任务
所以我试图使用这个代码
User.group_by_month(:created_at).count
直到这里我才能够得到我所想的数据
User.joins(:companions).uniq.group_by_month(:created_at).count
还有我每月统计的有同伴但根本不起作用的用户数
那我还需要加入一个'Task',看看哪个用户有同伴,还订了一个任务
所以我希望看到的结果是
每月注册用户数
Aug, 2020 = > 300
有同伴的用户
Aug, 2020 = > 150
有同伴并订购任务的用户
Aug, 2020 = > 75
我需要唯一编号的用户拥有伙伴,以及拥有伙伴并且还订购了任务的用户
Uniq
适用于数组。对于 collection of records
你可以使用 distinct
.
检查:https://apidock.com/rails/v5.2.3/ActiveRecord/QueryMethods/distinct
这意味着您可以使用:
User.joins(:companions).distinct.group_by_month(:created_at).count