Mysql查询用户留存/留存率问题--用户n日(内)留存、某日新增用户n日(内)留存_Jalen data analysis的博客-程序员秘密

技术标签: sql  

来源:数据运营与数据分析

Mysql查询用户留存/留存率语法

  • 计算某日的客户在第n日再次出现的概率--用户n日留存率。

  • 计算某日的客户在某个时间段内再次出现的概率--用户n日内留存率。

  • 计算某日新增的用户在第n日再次出现的概率--新用户n日留存率。

  • 计算某日新增的用户在某个时间段内再次出现的概率--新用户n日内留存率。

1.用户n日留存/留存率

计算某日的客户在第n日再次出现的概率--用户n日留存率。

  • 表名:订单总表;字段:客户编号,下单时间

-- 1.用户n日留存/留存率
-- 用户次日、3日、7日、30日,...留存/留存率

select *,
 concat(round(100*次日留存用户/日活跃用户数,2),'%')  次日留存率,
 concat(round(100*三日留存用户/日活跃用户数,2),'%')  三日留存率,
 concat(round(100*七日留存用户/日活跃用户数,2),'%')  七日留存率
from (
 select 
  date(a.下单时间) as 日期,
  count(distinct a.客户编号) as 日活跃用户数,
  count(distinct b.客户编号) as 次日留存用户,
  count(distinct c.客户编号) as 三日留存用户,
  count(distinct d.客户编号) as 七日留存用户
 from 订单总表 a 
  left join 订单总表 b 
   on a.客户编号 = b.客户编号 
   and date(b.下单时间) = date(a.下单时间) + 1
  left join 订单总表 c 
   on a.客户编号 = c.客户编号 
   and date(c.下单时间) = date(a.下单时间) + 3
  left join 订单总表 d 
   on a.客户编号 = d.客户编号 
   and date(d.下单时间) = date(a.下单时间) + 7
 where date(a.下单时间) between "2020/09/01" and "2020/09/05" 
 group by date(a.下单时间)
) p;

2.用户n日内留存/留存率

计算某日的客户在某个时间段内再次出现的概率--用户n日内留存率。

-- 2.用户n日内留存/留存率
-- 用户次日内、3日内、7日内、30日内,...留存/留存率

select *,
 concat(round(100*次日内留存用户/日活跃用户数,2),'%')  次日内留存率,
 concat(round(100*三日内留存用户/日活跃用户数,2),'%')  三日内留存率,
 concat(round(100*七日内留存用户/日活跃用户数,2),'%')  七日内留存率
from (
 select 
  date(a.下单时间) as 日期,
  count(distinct a.客户编号) as 日活跃用户数,
  count(distinct b.客户编号) as 次日内留存用户,
  count(distinct c.客户编号) as 三日内留存用户,
  count(distinct d.客户编号) as 七日内留存用户
 from 订单总表 a 
  left join 订单总表 b 
   on a.客户编号 = b.客户编号 
   and date(b.下单时间) = date(a.下单时间) + 1
  left join 订单总表 c 
   on a.客户编号 = c.客户编号 
   and (date(c.下单时间) BETWEEN date(a.下单时间) + 1 AND date(a.下单时间) + 3)
  left join 订单总表 d 
   on a.客户编号 = d.客户编号 
   and (date(d.下单时间) BETWEEN date(a.下单时间) + 1 AND date(a.下单时间) + 7)
 where date(a.下单时间) between "2020/09/01" and "2020/09/05" 
 group by date(a.下单时间)
) p;

3.新增用户n日留存/留存率

计算某日新增的用户在第n日再次出现的概率--新用户n日留存率。

## 3.某日新增用户留存/留存率
## 计算某日新增的用户在次日、3日、7日的留存率--新用户n日留存

select *,
 concat(round(100*次日留存用户/日新增用户数,2),'%')  次日留存率,
 concat(round(100*三日留存用户/日新增用户数,2),'%')  三日留存率,
 concat(round(100*七日留存用户/日新增用户数,2),'%')  七日留存率
from (
 select 
  date(a.下单时间) as 新增日期,
  count(distinct a.客户编号) as 日新增用户数,
  count(distinct b.客户编号) as 次日留存用户,
  count(distinct c.客户编号) as 三日留存用户,
  count(distinct d.客户编号) as 七日留存用户
 from 
 (
  select  
   date(t1.下单时间) as 下单时间,
   t1.客户编号 
  from 订单总表 as t1
   left join 订单总表 as t2
   on t1.客户编号=t2.客户编号
   and t2.下单时间<t1.下单时间
  where 
   (date(t1.下单时间) between "2020/09/01" and "2020/09/05") 
  and t2.下单时间 is Null  
 ) as a 
  left join 订单总表 b 
   on a.客户编号 = b.客户编号 
   and date(b.下单时间) = date(a.下单时间) + 1
  left join 订单总表 c 
   on a.客户编号 = c.客户编号 
   and date(c.下单时间) = date(a.下单时间) + 3
  left join 订单总表 d 
   on a.客户编号 = d.客户编号 
   and date(d.下单时间) = date(a.下单时间) + 7
 group by date(a.下单时间)
) p;

4.新增用户n日内留存率

计算某日新增的用户在次日内、3日内、7日内的留存率--新用户n日内留存率。

## 4.新增用户n日内留存率
## 计算某日新增的用户在次日内、3日内、7日内的留存率--新用户n日内留存率。
select *,
 concat(round(100*次日留存用户/日新增用户数,2),'%')  次日留存率,
 concat(round(100*三日留存用户/日新增用户数,2),'%')  三日留存率,
 concat(round(100*七日留存用户/日新增用户数,2),'%')  七日留存率
from (
 select 
  date(a.下单时间) as 新增日期,
  count(distinct a.客户编号) as 日新增用户数,
  count(distinct b.客户编号) as 次日留存用户,
  count(distinct c.客户编号) as 三日留存用户,
  count(distinct d.客户编号) as 七日留存用户
 from 
 (
  select  
   date(t1.下单时间) as 下单时间,
   t1.客户编号 
  from 订单总表 as t1
   left join 订单总表 as t2
   on t1.客户编号=t2.客户编号
   and t2.下单时间<t1.下单时间
  where 
   (date(t1.下单时间) between "2020/09/01" and "2020/09/05") 
  and t2.下单时间 is Null  
 ) as a 
  left join 订单总表 b 
   on a.客户编号 = b.客户编号 
   and date(b.下单时间) = date(a.下单时间) + 1
  left join 订单总表 c 
   on a.客户编号 = c.客户编号 
   and (date(c.下单时间) BETWEEN date(a.下单时间) + 1 AND date(a.下单时间) + 3)
  left join 订单总表 d 
   on a.客户编号 = d.客户编号 
   and (date(d.下单时间) BETWEEN date(a.下单时间) + 1 AND date(a.下单时间) + 7)
 group by date(a.下单时间)
) p;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41685388/article/details/109299885

智能推荐

淘宝全自动下单——解放双手_元器件烧毁大师的博客-程序员秘密

家里的卫生纸用的特别快,经常性需要买纸,一次买太多又放不下,双十一囤货省的钱不多,反而是占了家里的地方,所以就考虑设计一个脚本,可以完成一键下单,省去繁琐购买步骤。我喜欢用卫生纸牌子比较固定,在淘宝上选好一家价格质量合适的链接后,考虑这么设计购入流程:(设计流程参考了一些双十一自动下单脚本)#mermaid-svg-ytZVjLzg3fwz86tx .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-fo

PaperNotes(4)-高质量图像生成-CGAN-StackGAN-Lapgan-Cyclegan-Pix2pixgan_cgan图像生成_小陈同学-陈百万的博客-程序员秘密

cgan,stackgan,lapgan,cyclegan,pix2pixgan简记1.Conditional GAN1.1简介1.2网络结构与训练1.3特点与用途2.Stack GAN2.1简介2.2网络结构与训练2.3特点与用途3.Lap GAN3.1简介3.2网络结构与训练3.3特点与用途4.Pix2pix GAN4.1 简介4.2 网络结构和训练4.3 特点和用途5.Patch GAN6.Cycle GAN6.1简介6.2网络结构与训练6.3特点与用途7.思考与待定题记–如何生成高质量图像,gan

海天蚝油《挑战不可能》特战队员角逐极速枪王_haitxw的博客-程序员秘密

海天蚝油《挑战不可能》特战队员角逐“极速枪王”。由加一点就好鲜好鲜的海天蚝油独家冠名播出的大型励志挑战节目《挑战不可能之加油中国》本周将于CCTV-1本周日晚八点黄金档如期播出,三位超强能力者强势来袭——“最强大脑”人气选手谢超东携爱侣再度向“细胞记忆”发起挑战,3万种可能让人目不暇接;元气少年“组团”来战,心算项目难度阶梯式上升,再创佳绩;武警吉林省总队特战队员1.7秒5发子弹全部命中目标,终极...

爆破工具wfuzz的使用笔记_yida223的博客-程序员秘密

推荐米斯特的wfuzz手册三部曲相关命令-c:用颜色输出-v:详细的信息-o 打印机:由stderr输出格式-p addr:使用代理(ip:port或ip:port-ip:port-ip:port)-x type:使用SOCK代理(SOCKS4,SOCKS5)-t N:指定线程数(默认20个)-s N:指定请求之间的时间延迟(默认为0)-e :可用...

随便推点

RAID的几种工作模式_raid6的工作方式_她与星辰皆璀璨的博客-程序员秘密

**RAID的几种工作模式** 1、RAID0即Data Stripping数据分条技术。RAID 0可以把多块硬盘连成一个容量更大的硬盘群,可以提高磁盘的性能和吞吐量。RAID 0没有冗余或错误修复能力,成本低,要求至少两个磁盘,一般只是在那些对数据安全性要求不高的情况下才被使用。(1)、RAID ...

Netty的入门-UDP协议开发_closefuture().await();_Eric_LanOu的博客-程序员秘密

User Datagram Protocal直接用IP协议进行数据发送,提供的是面向无连接,不可靠的数据投递服务。使用UDP的应用程序必须自己解决数据丢失,重复,排序,差错确认等问题。

root用户重置密码_小小顺的博客-程序员秘密

在Linux学习中,我们有时候会遇到忘记root用户密码这样尴尬的时刻,但是,不用担心,我们可以用如下方法来重置root用户的密码1.重启Linux系统主机并出现引导界面时,按下键盘上的e键进入内核编辑界面2.在linux16参数这行的最后面追加“rd.break”参数,然后按下Ctrl + X组合键来运行修改过的内核程序,进入到系统的紧急求援模式3.依次输入以下命令,等待系统重启操作完...

阿里、京东都在说的赋能到底是什么?_阿里赋能啥意思_猎头吧的博客-程序员秘密

谷歌创始人之一拉里·佩奇说,未来组织中最重要的功能已经越来越清晰,那就是赋能,而不再是管理或激励。赋能是最近几年比较火的词,阿里说要赋能商家,京东到家发布了“零售赋能”新战略,联想表示:AI驱动着第四次工业革命,联想要做推动者和赋能者……赋能是什么?为什么这么多标杆企业都在讨论赋能?一、赋能是什么?其实,国内最初刮起“赋能”的风是源于阿里巴巴总参谋长曾鸣提出:未来组织最重要的功能已经越来越清楚,那就是赋能,而不再是管理或激励。著名的管理学家陈春花老师也说,未来的组织管理中最核心的价值其实就是我们

mysql时间转换整数_mysql 里int时间转换datetime时间_36摄氏度的博客-程序员秘密

from_unixtime()是MySQL里的时间函数?Sql代码select?uid,userid,username,email,FROM_UNIXTIME(addtime,'%Y年%m月%d')?from?members以上例子是sql语句的例子,直接能将mysql的时间戳类型转换成日期格式date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix时间戳字符串?后...

推荐文章

热门文章

相关标签