sql - PostgreSQL 每月平均参加活动的人数
问题描述
我正在尝试编写一些 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
解决方案
如果我没听错的话,一个简单的方法是将每月的行数除以不同的用户数:
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)
推荐阅读
- react-native - 双花括号上的 React Native 错误,ESLint/Prettier 警告
- javascript - 无法为 aws s3 生成预签名 URL
- html - 如何让 PreMailer.Net 不更改非 ascii 字符的编码?
- xamarin - Xamarin.UITest 与 OS X 10.15 不兼容?
- ios - 颤振应用程序无法运行,无法找出原因
- tensorflow - ” Anaconda Jupyter “内核似乎已经死了。它将自动重新启动。”
- javascript - “无法设置未定义的属性‘jwtClient’”尝试将 Node.js 与 Google 表格一起使用
- r - 如何将表格添加到ggplot?
- python - TypeError:添加的层必须是类Layer的实例。成立:
- python - 如何在 python 中高效地读写大型 JSON 文件?