当前位置:首页 » 编程语言 » 次月留存SQL
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

次月留存SQL

发布时间: 2023-07-13 23:10:51

sql计算电商各项指标数据

本次笔记主要是记录通过SQL计算电商各项指标数据,包括AARRR部分指标、RFM模型等常用的指标数据;

平台指标:

商品指标:

用户行为指标:

RFM模型:见之前的文章《 SQL建立RFM模型指标的两种方法对比 》

用户留存率:见之前文章《 SQL 查询用户留存率(根据两种不同定义计算) 》

首先我们导入相关数据,并去重数据放进新表 temp_trade;

由于时间关系,以导入如下数据,期间利用
SET date_time = STR_TO_DATE(time,'%Y-%m-%d %H');
set dates=date(date_time);
这两个函数对原表(红框)日期进行处理;

再检查一下关键字段有无缺失值

查询后得出并无缺失。

查询结果无异常值;

检查用户行为数据有没有其他类型;

查询结果无异常值;

-- 建新表,放进 去重后的 数据

create table temp_trade like o_retailers_trade_user;
insert into temp_trade select distinct * from o_retailers_trade_user;

查询结果:

这里定义跳失率=只有浏览行为的用户数/总用户数

查询结果

这里的购买转化率定义为:某段时间产生购买行为的用户数/所有到达店铺的访客人数

查询结果:

同时可以通过这算法求得:每天总行为次数、每天点击次数、收藏次数、加购物⻋次数、购买次数

查询结果如下:

由于转化率的对象是商品,所以以商品id做分组,求对应的用户行为数求和。可得出每商品的在该段时间内的浏览、收藏、加购、购买次数,同时可求得商品购买转化率。

查询结果:

此方法与上面商品转化率大致相同,分组对象改为品类id即可。

查询结果:

首先创建hours的新字段,并提取时间;

查询结果如下:

首先求出各用户的购买次数

查询结果:

用case when函数统计出各复购买次数的用户数

查询结果如下:

最后将行为串联起来,并对其进行用户数统计;

查询结果如下:

(完结)

⑵ SQL里面怎么表示当月21号和次月20号

当月21日:

selectcast(convert(varchar(7),getdate(),120)+'-21'asdatetime)

次月20日:

selectcast(convert(varchar(7),dateadd(mm,1,getdate()),120)+'-20'asdatetime)

⑶ MySQL新增留存率

没错,留存的问题还没有写完,之前两篇把日、周、月当期活跃用户在后续周期的留存率问题解决了。但是还有个非常重要的指标,当期新增用户的留存率,这个指标也是很有价值的,我们必须要关注不同日期拉新用户的质量如何,看看不同时期新用户的后续留存情况,对后续拉新的时间选择也是有参考价值的。

其实实现也很简单,只需要在之前的基础上,先把当期的首次登陆用户找出来就行了。实现方式是,按照用户聚合,然后取日期最小值就能取出每个用户首次登陆日期了,SQL语句如下↓

然后就以此为基础,通过左连接把用户表格再连接一次,判断与首次登陆的日期相差多少天就行了,就能判断是第N天有活跃,就能计算N日留存和留存率了,SQL语句和结果如下↓

后面就和之前思路一样了,就可以求出日留存率情况了,SQL语句如下,解释可以看前面两篇。

然后按月实现方式和上一篇一样的思路,关联一个辅助表就行了,这里不详细解释了,可以参考上一篇,完整SQL语句和结果如下↓

那么按周的留存率也是一样的,SQL语句和结果如下↓

End

◆ PowerBI开场白
◆ Python高德地图可视化
◆ Python不规则条形图

⑷ 如下问题的sql语句怎么写

由于手上没有sql环境,我这边直接模拟一下,有错误的地方请指出:

1.每天每个地区播放次数最多的三首歌

selecttop3*from
(
selecta.area,b.songid,convert(varchar(30),b.date,111)as[每天],
sum(b.play_cnt)as[播放次数]
fromuseraleftjoinsongbona.userid=b.userid
groupbya.area,b.songid
)torderby[播放次数]desc

2.留存率

select*from(
selectb.*
fromuseraleftjoinsongbona.userid=b.userid
whereb.date>='2019-5-10:00:00'
andb.date<='2019-5-223:59:59'
)t
whereexists(
selectnullfromsongwheresong.songid=t.songid
and
convert(varchar(30),song.date,111)=
convert(varchar(30),dateadd(d,-1,t.date),111)
)

请试一下,如有疑问,及时沟通!

⑸ sql计算留存率算法

select ( select count(distinct userid ) from 登录表 where 登录时间 = 今天 ) / ( select count(1) from 注册表 where 注册时间 = 昨天 ) as 户留存率

⑹ sql数据库日志保存六个月在哪里设置

1、首先打开SQLServerManagementStudio。
2、其次在对应连接上右键,选择“属性”。
3、再次在“服务属性”上,选择“数据库设置”。
4、最后在右边修改配置即可。