我目前正在尝试计算我的用户的保留率,我有困难得到我需要的。我想做的是在任何给定的日期能够计算所有新注册的用户,看看有多少回来后几天,几周,几个月等。
因此,我有不同的保留指标,我称之为D1(一天的留存率)、D7(一周的保留率)和D365(一年的保留率)。
下面是我的表格结构的一个简化示例:
下面是查询应该返回的结果的一个简化示例:
最后,下面是我当前的查询:
SELECT
loginDate AS Date,
sum(CASE WHEN DATEDIFF(loginDate, installDate) = 1 THEN 1 END) / count(*) AS D1,
sum(CASE WHEN DATEDIFF(loginDate, installDate) = 7 THEN 1 END) / count(*) AS D7
FROM logins
GROUP BY loginDate
虽然我相信求和部分是正确的,但除以计数(*)看起来不对。我一直在尝试除以count(不同的用户ID),但也没有运气。总的来说,我不太确定如何在计算中考虑每个相关的日子。例如,如果我们采用D1指标,我很难找出如何将T+1时返回的用户除以T时创建帐户的用户总数。
有人能帮忙吗?
1条答案
按热度按时间ghhkc1vu1#
我觉得你应该这么做:
1.计算总共有多少用户创建了他们的帐户-因此,似乎对于每个
userId
行数据,其中installDate = loginDate
是创建日期。1.根据间隔首选项计算使用的用户数。
1.将间隔的计数结果除以用户创建的总数。
下面是您可以尝试的示例查询:
这将为您提供以下结果:
| 已安装用户总数|D1百分比|D 7百分比|
| - ------|- ------|- ------|
| 四个|五十|二十五|
Here's a fiddle breakdown of the query
至于在查询中,除了获取天间隔之外,还使用了日期列,您可能只会使用它来指定一个
installDate
范围,最有可能是在第一个查询中: