PostgreSQL 查询每个月参加活动的平均人数

PostgreSQL for the average number of attendances of an event per month

我正在尝试写一些 SQL 来了解每月参加的活动的平均数量。

与会者

| id | user_id | event_id | created_at |

我试过:

SELECT AVG(b.rcount) FROM (select count(*) as rcount FROM attendees GROUP BY attendees.user_id) as b;

但是这个 returns 5.77(这只是所有时间的平均值)。我正在尝试获取每月的平均值。

理想的结果是:

2020-01-01, 2.1
2020-01-02, 2.4
2020-01-03, 3.3
...

我也试过这个:

SELECT mnth, AVG(b.rcount) FROM (select date_trunc('month', created_at) as mnth, count(*) as rcount FROM attendees GROUP BY 1, 2) as b;

但是得到了:ERROR: aggregate functions are not allowed in GROUP BY

如果我没听错的话,一个简单的方法是将每月的行数除以不同用户的数量:

select
    date_trunc('month', created_at) created_month,
    1.0 * count(*) / count(distinct user_id) avg_events_per_user
from attendees
group by date_trunc('month', created_at)