mysql 本月老客户次月留存率_SQL-用户月留存率;
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-用户月留存率;相关推荐
- python 月活_TikTok用户月活超1亿意味着什么?什么是月活用户?
想真正了解TikTok用户月活超1亿意味着什么? 就需要先知道,什么是活跃用户?平台是如何定义活跃用户的? 随便定义活跃用户,意义不大! 根据App的不同类型,需要经过产品经理和运营共同分析后进行确定 ...
- 社区小程序---上线三个多月Get230万用户,留存率高达41%
2019年1月5号,阿拉丁要举办小程序年会,最近灯妹儿也为此贡献了微薄的力量,接触了很多做的非常好的小程序.其中有像「海盗来了」.「糖豆广场舞」等自从小程序问世就加入进来的先行者,也有之前我们采访过的 ...
- mysql 查询 系统字段 自然日_Mysql查询用户留存/留存率问题用户n日(内)留存、某日新增用户n日(内)留存...
Mysql查询用户留存/留存率语法 计算某日的客户在第n日再次出现的概率--用户n日留存率. 计算某日的客户在某个时间段内再次出现的概率--用户n日内留存率. 计算某日新增的用户在第n日再次出现的概率 ...
- mysql查询前12个月的数据_MySQL 统计过去12个月的数据(包括本月),mysql本月
MySQL 统计过去12个月的数据(包括本月),mysql本月 1.问题 需要统计过去12个月的数据,如现在是2015年4月,那么我们需要统计从2014年5月到2015年4月的数据情况.而这12个月中 ...
- mysql年月分表_MySQL之按月拆分主表并按月分表写入数据提高数据查询速度
使用场景: 主表数据量特别大,为了提高查询的速度,可以考虑按月进行分表,要求就是当月的数据到当月表查询,上月的数据到上月表查询,当天的数据到主表来查询.这样在一定程度上也是提高了数据的查询速度 过程演 ...
- mysql long类型_怒肝两个月MySQL源码,我总结出这篇2W字的MySQL协议详解(超硬核干货)!!...
点击上方蓝色"冰河技术",关注并选择"设为星标" 持之以恒,贵在坚持,每天进步一点点! 作者个人研发的在高并发场景下,提供的简单.稳定.可扩展的延迟消息队列框架 ...
- 计算app用户的留存率
现在各种app盛行,与此同时,运营app也变得非常重要,关注app用户的留存情况是运营中的重要的一项,那么如何计算app的用户留存率呢?在该功能实现过程中,我使用了mysql的存储过程,每天定时任务执 ...
- MySQL 8.0 批量生产千万级用户、手机号等信息
在测试功能的时候需要生千万级甚至亿级别的,可以通过写MySQL的存储过程来模拟真实的用户信息. 说明: 该存储过程使用基于id作为自增主键, 有手机号是随机生成,可能会有少量重复手机号码,后面有滤重S ...
- mysql 5.7 收费_MySQL5.7 常用用户操作
目录 mysql5.7 常用用户操作 之前的一篇博文讲述了安装mysql,但是我们在安装后mysql之后的操作中一般不使用root用户来进行相应的操作,所以要新建用户,并赋予相应的权限后,才能更好的使 ...
最新文章
- 沈向洋:读论文的三个层次
- SQL UNION 操作符
- C# 2.0 除了泛型
- 正则表达式不包含某个字符串_JMeter必知必会系列(18) JMeter正则表达式提取器疑难分析...
- 辗转相除求最大公约数
- Linux性能优化2.1 CPU性能统计信息
- bootstraptable 怎么在特定行添加数据_同等权限下多任职之间数据权限的实例
- vs发布项目webconfig替换语法
- android shape的使用详解以及常用效果(渐变色、分割线、边框、半透明阴影效果等)...
- JQuery序列化表单serialize() 以及 serializeArray()
- 简单的Tomcat中配置访问本地资源(含idea配置)
- 创业指南:如何快速拿到天使投资?
- 打造铜墙铁壁 DDoS攻击全面解析
- mysql左链sql去重_MySql去重
- 解决 “ISO C++ 不允许比较指针和整数的值 “
- 网站后台——用户上传图片剪切
- 史上最全mysql日期计算(月初、月末、上中下旬判断、年初、年末、季初、季末)
- 苹果5概念机_iPhone x Fold概念机曝光,搭配A13处理器,还支持5G,价格多少合适?...
- uni-app/js/小程序/生成支付二维码图片,类似于支付宝和微信商家码
- Ionic2 WARNING: sanitizing HTML stripped some content when no content stripped