如何使用SQL计算保留?

时间:2016-07-25 20:48:45

标签: mysql sql

我正在尝试计算1天,7天和2周的保留率,但我陷入困境。名为UIViewController的表具有首次登录的日期。名为presentingViewController的表格具有所有后续登录的日期。

我的想法是从users表中找到“最大”或最近的登录信息,并查看自用户首次登录以来这是多少天。最后,我希望按首次登录日期进行分组,并计算1天后,7天后和14天后登录应用程序的“同类群组”中的用户数。我觉得我很接近,但它并不存在。

以下是我到目前为止的情况。

logins

任何提示都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我将假设你问题中的查询是正确的,你需要帮助才能更进一步。

看起来您要做的是从第一个查询的结果中进行选择,并计算具有retentionDays> = 1的用户数,具有retentionDays> = 7的用户数以及具有的用户数retentionDays> = 14。

在SQL中翻译,提供如下查询:

SELECT
  SUM(IF(retentionDays >= 1, 1, 0)) as 1day
  SUM(IF(retentionDays >= 7, 1, 0)) as 7days
  SUM(IF(retentionDays >= 14, 1, 0)) as 14days
FROM (
  /* your previous query */
) as computedRetentionDays;

如果您想要比率而不是值,则可以将每个总和除以COUNT(uid)

话虽如此,我建议您在lastlogin_ts上添加一列users,这将使您的生活更轻松(此查询更快)。