我正在寻找一个SQL查询,它将告诉我注册帐户后每天参与的用户百分比。在输出表中;在这一天参与的用户的百分比"不是指特定的一天,而是指他们注册后的相对天数(即,无论日历日期如何,他们拥有账户的"第一天"(。
因此,如果我有三个用户,他们在前两天都使用该应用程序,然后停止,那么第1天和第2天的输出将是100%,自第一个用户注册以来的输出将为0%。第一天是他们注册的日子,所以这一天应该是100%(他们的注册将显示在订婚表中(。我相信查询将如下开始,但我不知道如何计算第N天参与的人数(分子(,以及注册至少N天的总人数(分母(。
SELECT date - signup_date as days_since_signup
FROM Users u
JOIN Engagement e
ON u.user_id=e.user_id
…
用户表
user_id | signup_date |
---|---|
43 | 2021年4月26日 |
76 | 2021年4月29日 |
77 | 2021年5月2日 |
… |
这应该做到:
SELECT days_since_signup,
MAX(a.num_users)/COUNT(1) as pct_users
FROM ( SELECT date - signup_date as days_since_signup,
COUNT(1) as num_users
FROM Users u
JOIN Engagement e
ON u.user_id=e.user_id
GROUP BY days_since_signup
) a,
Users u
WHERE today - u.signup_date >= days_since_signup
GROUP BY days_since_signup