【问题标题】:PostgreSQL for the average number of attendances of an event per monthPostgreSQL 每月平均参加活动的人数
【发布时间】:2020-09-20 19:32:39
【问题描述】:

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

但这会返回 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

【问题讨论】:

    标签: sql postgresql count average distinct


    【解决方案1】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      • 2016-10-02
      • 1970-01-01
      • 2013-03-25
      相关资源
      最近更新 更多