SQL-用户月留存率;

需求背景:

根据订单表,统计每个月在接下来几个月用户复购情况;(如:5月下单用户10000人;这10000人又在6月又下单的用户有5000人,这10000人在7月下单的用户有8000人;)

解析思路:可以建立一张 用户,月份临时表;

临时表自关联,产生笛卡尔积,使用用户id判定是否复购,用月份判定留存;

核心代码:

# 数据预处理-用户,月份去重;

drop table if exists tmp_user_retaion ;

create table tmp_user_retaion

as

select month as dt,userid

from odl_user_retain

group by month,userid;

# 留存计算;

select t1.dt as 自然月份,

t2.dt as 复购月份,

count(distinct t2.userid) as 复购用户数,

count(distinct t1.userid) as 总用户数

from tmp_user_retaion t1

left join tmp_user_retaion t2

on (t1.userid=t2.userid and t1.dt < t2.dt)

group by t1.dt,t2.dt

图表展示:

数据预处理

留存计算:自关联,产生笛卡尔积;

原始表数据:表结构;

CREATE TABLE `odl_user_retain` (

`month` bigint(20) DEFAULT NULL,

`userid` bigint(20) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin表数据;(需要先建立表,再插入数据)

INSERT INTO `odl_user_retain` (`month`, `userid`) VALUES (1, 1001);

INSERT INTO `odl_user_retain` (`month`, `userid`) VALUES (2, 1001);

INSERT INTO `odl_user_retain` (`month`, `userid`) VALUES (2, 1002);

INSERT INTO `odl_user_retain` (`month`, `userid`) VALUES (3, 1001);

INSERT INTO `odl_user_retain` (`month`, `userid`) VALUES (3, 1003);

INSERT INTO `odl_user_retain` (`month`, `userid`) VALUES (3, 1002);

延伸:

t1.dt <= t2.dt ,添加一个等号,可以看看有什么效果;

from tmp_user_retaion t1

left join tmp_user_retaion t2

on (t1.userid=t2.userid and t1.dt <= t2.dt)

mysql 本月老客户次月留存率_SQL-用户月留存率;相关推荐

  1. python 月活_TikTok用户月活超1亿意味着什么?什么是月活用户?

    想真正了解TikTok用户月活超1亿意味着什么? 就需要先知道,什么是活跃用户?平台是如何定义活跃用户的? 随便定义活跃用户,意义不大! 根据App的不同类型,需要经过产品经理和运营共同分析后进行确定 ...

  2. 社区小程序---上线三个多月Get230万用户,留存率高达41%

    2019年1月5号,阿拉丁要举办小程序年会,最近灯妹儿也为此贡献了微薄的力量,接触了很多做的非常好的小程序.其中有像「海盗来了」.「糖豆广场舞」等自从小程序问世就加入进来的先行者,也有之前我们采访过的 ...

  3. mysql 查询 系统字段 自然日_Mysql查询用户留存/留存率问题用户n日(内)留存、某日新增用户n日(内)留存...

    Mysql查询用户留存/留存率语法 计算某日的客户在第n日再次出现的概率--用户n日留存率. 计算某日的客户在某个时间段内再次出现的概率--用户n日内留存率. 计算某日新增的用户在第n日再次出现的概率 ...

  4. mysql查询前12个月的数据_MySQL 统计过去12个月的数据(包括本月),mysql本月

    MySQL 统计过去12个月的数据(包括本月),mysql本月 1.问题 需要统计过去12个月的数据,如现在是2015年4月,那么我们需要统计从2014年5月到2015年4月的数据情况.而这12个月中 ...

  5. mysql年月分表_MySQL之按月拆分主表并按月分表写入数据提高数据查询速度

    使用场景: 主表数据量特别大,为了提高查询的速度,可以考虑按月进行分表,要求就是当月的数据到当月表查询,上月的数据到上月表查询,当天的数据到主表来查询.这样在一定程度上也是提高了数据的查询速度 过程演 ...

  6. mysql long类型_怒肝两个月MySQL源码,我总结出这篇2W字的MySQL协议详解(超硬核干货)!!...

    点击上方蓝色"冰河技术",关注并选择"设为星标" 持之以恒,贵在坚持,每天进步一点点! 作者个人研发的在高并发场景下,提供的简单.稳定.可扩展的延迟消息队列框架 ...

  7. 计算app用户的留存率

    现在各种app盛行,与此同时,运营app也变得非常重要,关注app用户的留存情况是运营中的重要的一项,那么如何计算app的用户留存率呢?在该功能实现过程中,我使用了mysql的存储过程,每天定时任务执 ...

  8. MySQL 8.0 批量生产千万级用户、手机号等信息

    在测试功能的时候需要生千万级甚至亿级别的,可以通过写MySQL的存储过程来模拟真实的用户信息. 说明: 该存储过程使用基于id作为自增主键, 有手机号是随机生成,可能会有少量重复手机号码,后面有滤重S ...

  9. mysql 5.7 收费_MySQL5.7 常用用户操作

    目录 mysql5.7 常用用户操作 之前的一篇博文讲述了安装mysql,但是我们在安装后mysql之后的操作中一般不使用root用户来进行相应的操作,所以要新建用户,并赋予相应的权限后,才能更好的使 ...

最新文章

  1. 沈向洋:读论文的三个层次
  2. SQL UNION 操作符
  3. C# 2.0 除了泛型
  4. 正则表达式不包含某个字符串_JMeter必知必会系列(18) JMeter正则表达式提取器疑难分析...
  5. 辗转相除求最大公约数
  6. Linux性能优化2.1 CPU性能统计信息
  7. bootstraptable 怎么在特定行添加数据_同等权限下多任职之间数据权限的实例
  8. vs发布项目webconfig替换语法
  9. android shape的使用详解以及常用效果(渐变色、分割线、边框、半透明阴影效果等)...
  10. JQuery序列化表单serialize() 以及 serializeArray()
  11. 简单的Tomcat中配置访问本地资源(含idea配置)
  12. 创业指南:如何快速拿到天使投资?
  13. 打造铜墙铁壁 DDoS攻击全面解析
  14. mysql左链sql去重_MySql去重
  15. 解决 “ISO C++ 不允许比较指针和整数的值 “
  16. 网站后台——用户上传图片剪切
  17. 史上最全mysql日期计算(月初、月末、上中下旬判断、年初、年末、季初、季末)
  18. 苹果5概念机_iPhone x Fold概念机曝光,搭配A13处理器,还支持5G,价格多少合适?...
  19. uni-app/js/小程序/生成支付二维码图片,类似于支付宝和微信商家码
  20. Ionic2 WARNING: sanitizing HTML stripped some content when no content stripped

热门文章

  1. 关于用Go做一些OJ时遇到的问题
  2. wps如何设置文字底纹
  3. 什么叫真五轴?什么叫假五轴?与三轴有什么区别?
  4. 在Office365中批量添加联系人
  5. 有些事情,拖着拖着也许就黄了
  6. python中的且和或怎么表示_python中逻辑与或(and、or)和按位与或异或(、|、^)区别...
  7. 01背包问题动态规划(二维数组)
  8. 获得淘口令真实url API 返回值说明
  9. 使用distpicker的页面完善
  10. USB接口出现电火花有伤害吗?