sql - 客户每周登录分析
问题描述
也许有人可以帮忙?
我正在使用 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 |
所需表格:
解决方案
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
它就不会在超过一年的时间跨度内中断。 - 我在没有数据库的情况下写了这个,所以它包含错误和错别字,但我希望基本的想法能被理解。
推荐阅读
- python - 如何始终如一地定时打印
- sql - 在 SQL 中选择具有产品组合的城市
- hive - hive alter table concatenate 命令风险
- react-native - Firebase 实时数据库高级安全规则
- reactjs - 防止 eventListener 多次触发
- typescript - SonarQube 显示“简化此表达式”
- java - 尝试通过与 Arraylist 比较,使用 Discord4j 包装器在 Discord 消息中搜索关键字
- bash - 来自守护进程的错误响应:当我尝试在容器内提交更改时未能获得摘要:第 1 部分
- python-3.x - I want to login with both and phone number in this DRF
- parquet - 在Kafka连接S3连接器中使用Null内部数组处理消息