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)
我正在尝试写一些 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)