原创声明:求连续90日每日的用户留存率 -「建议收藏」

原创声明:求连续90日每日的用户留存率 -「建议收藏」业务端需要求连续90日每日的用户留存率改怎么计算呢??? 一: 本文采用MySQL8.0环境 1: 建表数据 CREATE TABLE `user_login` ( `user_id` int NOT

原创声明:求连续90日每日的用户留存率 -

   业务端需要求连续90日每日的用户留存率改怎么计算呢???

 

   一: 本文采用MySQL8.0环境

  1: 建表数据
    CREATE TABLE `user_login` (
  `user_id` int NOT NULL,
  `login_date` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;   MySQL8.0  或者 hive 执行


表里的数据如下:

user_id login_date
“1001” “2021-12-12”
“1002” “2021-12-12”
“1001” “2021-12-13”
“1001” “2021-12-14”
“1001” “2021-12-16”
“1002” “2021-12-16”
“1001” “2021-12-19”
“1002” “2021-12-17”
“1001” “2021-12-20”
“1002” “2021-12-14”
“1002” “2021-12-20”
“1003” “2021-12-12”
“1004” “2021-12-18”
“1005” “2021-12-20”
“1006” “2021-12-14”
“1007” “2021-12-14”
“1007” “2021-12-19”

 

 

 二:执行SQL

   select a.login_date 日期,
       datediff(b.login_date , a.login_date) as days,   
count(distinct if(datediff(a.login_date , a.login_date_min) = 0 ,a.user_id,null)) as 注册用户数,
count(distinct if(datediff(b.login_date , a.login_date) != 0  ,if(datediff(b.login_date , a.login_date) != 0 and a.user_id = b.user_id, b.user_id,null),
if(datediff(a.login_date , a.login_date_min) = 0  ,a.user_id,null))) as  days日留存用户数
from (
select
user_id,login_date,case when rn =1 then login_date else null end login_date_min
from
(select
user_id,login_date,
row_number() over(partition by user_id order by login_date) rn
from
user_login
) tmp
)  a
left join user_login b on  b.login_date >=a.login_date  and datediff(b.login_date ,a.login_date) <=90
 
group by a.login_date,days
 having 注册用户数 != 0 
order by 日期,days asc

 

 

 三:执行结果

 

    日期        days   注册用户数   days日留存用户数
2021-12-12  0         3           3
2021-12-12  1         3           1
2021-12-12  2      3           2
2021-12-12  4         3           2
2021-12-12  5         3           1
2021-12-12  6         3           0
2021-12-12  7         3           1
2021-12-12  8         3           2
2021-12-14  0         2           2
2021-12-14  2         2           2
2021-12-14  3         2           1
2021-12-14  4         2           0
2021-12-14  5         2           2
2021-12-14  6         2           2
2021-12-18  0         1           1
2021-12-18  1         1           0
2021-12-18  2         1           0
2021-12-20  0         1           1
 

 

 

  参考博客:感谢大佬分享

  https://blog.csdn.net/qq_25002995/article/details/104928397?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-1-104928397-blog-120935637.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-1-104928397-blog-120935637.pc_relevant_default&utm_relevant_index=1

原文地址:https://www.cnblogs.com/guodong1789/archive/2022/07/29/16532069.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4954.html

(0)
上一篇 2023-05-29
下一篇 2023-05-29

相关推荐

  • TeamCenter12.0升级到12.3过程中ORA-01119: 创建数据库文件失败

    TeamCenter12.0升级到12.3过程中ORA-01119: 创建数据库文件失败TeamCenter12.0升级到12.3过程中创建Oracle数据库失败查看log发现,在执行ExecutingSQLscriptoracle_create_servermanager.sql.t…

    2023-04-01
    174
  • 如何在PyCharm中运行Python代码

    如何在PyCharm中运行Python代码PyCharm 是 JetBrains 公司开发的一款 Python 集成开发环境。它提供了许多有用的功能,如代码自动补全、调试、版本控制等,是 Python 开发者最喜欢的 IDE 之一。

    2024-09-06
    21
  • MySQL字符串截取的4个函数[亲测有效]

    MySQL字符串截取的4个函数[亲测有效]1、从左开始截取字符串 left(str, length) 说明: left(被截取字段,截取长度) 例如: select left(content,200) as abstract from my…

    2023-01-31
    157
  • 包含python之jieba库使用的词条

    包含python之jieba库使用的词条自然语言处理(NLP)是机器学习重要分支之一,主要应用于篇章理解、文本摘要、情感分析、知识图谱、文本翻译等领域。而NLP应用首先是对文本进行分词,当前中文分词器有Ansj、paoding、盘古分词等多种,而最基础的分词器应该属于jieba分词器(比较见下图)。

    2023-11-27
    108
  • Python模块的使用

    Python模块的使用Python是一种高级编程语言,被广泛用于数据分析、机器学习、Web应用程序和系统管理等领域。Python库是一个重要的工具,它提供了许多函数和类库,可以大大提高我们的编程效率,比如可以避免重复劳动。这些库是Python模块的一部分,允许我们在我们的脚本或应用程序中使用。

    2024-05-09
    66
  • 查询字段中含有汉字的sql

    查询字段中含有汉字的sql1.利用ASCIISTR这个函数查询,查询字段为bid_amount select * from project_win_info where ASCIISTR(bid_amount) like ‘…

    2023-04-01
    150
  • (5)MySQL进阶篇SQL优化(优化数据库对象)[通俗易懂]

    (5)MySQL进阶篇SQL优化(优化数据库对象)[通俗易懂]1.概述 在数据库设计过程中,用户可能会经常遇到这种问题:是否应该把所有表都按照第三范式来设计?表里面的字段到底改设置为多大长度合适?这些问题虽然很小,但是如果设计不当则可能会给将来的应用带来很多的性

    2023-04-10
    166
  • Mysql 一主一从「建议收藏」

    Mysql 一主一从「建议收藏」1. 主从原理 1.1 主从介绍 所谓 mysql 主从就是建立两个完全一样的数据库,其中一个为主要使用的数据库,另一个为次要的数据库,一般在企业中,存放比较重要的数据的数据库服务器需要配置主从,这样

    2023-06-01
    135

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注