首页 > 解决方案 > 客户每周登录分析

问题描述

也许有人可以帮忙?

我正在使用 PostgreSQL,并且正在尝试创建队列分析,以便跟踪用户登录。我自己不是 SQL 专家,但我发现了很多示例,但其中许多是针对 MySQL 定制的或已过时。这几天卡在这个问题上,谢谢。

群组 - 在一周内注册的客户(例如第 19 周)

期望的结果:

让我解释一下...我们有一行是Cohort,第一周是注册用户数,下周显示有多少注册用户登录,第三周也显示有多少用户第二周后登录,并继续。

使用了 2 个表:users_user, users_logins.

users_user fields: | id | last_login | date_joined |
users_logins fields: | created_at | user_id |

所需表格:

在此处输入图像描述

标签: sqlpostgresql

解决方案


SELECT DATE_PART('week', date_joined),
COUNT(
    CASE 
        WHEN (DATE_PART('day', last_login - date_joined) <= 1*7) THEN 1 
        ELSE NULL))
    END
) AS week_1,
COUNT(
    CASE 
        WHEN (DATE_PART('day', last_login - date_joined) <= 2*7) THEN 1 
        ELSE NULL))
    END
) AS week_2,
COUNT(
    CASE 
        WHEN (DATE_PART('day', last_login - date_joined) <= 3*7) THEN 1 
        ELSE NULL))
    END
) AS week_3,
COUNT(
    CASE 
        WHEN (DATE_PART('day', last_login - date_joined) <= 4*7) THEN 1 
        ELSE NULL))
    END
) AS week_4
from users_user
group by DATE_PART('week', date_joined) 

笔记:

  • 根据需要展开任意数量的列。
  • 您可能还想在 and 中添加一个 year 列,SELECT这样GROUP BY它就不会在超过一年的时间跨度内中断。
  • 我在没有数据库的情况下写了这个,所以它包含错误和错别字,但我希望基本的想法能被理解。

推荐阅读