您如何围绕活动记录中的时间段进行分组,但每个用户只计算一次出现?

Jer*_*ith 1 ruby activerecord ruby-on-rails

如果我有一个 DailyCount 表来跟踪用户活动,如下所示:

occurred_at | Sat, 04 Aug 2018
user_id     | 1

occurred_at | Sat, 04 Aug 2018
user_id     | 2

occurred_at | Fri, 03 Aug 2018
user_id     | 1
Run Code Online (Sandbox Code Playgroud)

如果我使用 groupdate,我可以进行如下查询:

DailyCount.group_by_period('week', :occurred_at).count
Run Code Online (Sandbox Code Playgroud)

我会得到如下结果:

Sun, July 29 2018=>3
Run Code Online (Sandbox Code Playgroud)

但我想让用户在那个星期只计算一次。有没有办法使用 groupdate gem 或不使用 datetrunc 来做到这一点?

AbM*_*AbM 5

DailyCount.group_by_period('week', :occurred_at).count('distinct(user_id)')
Run Code Online (Sandbox Code Playgroud)