首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何分析用户复购行为?

如何分析用户复购行为?

作者头像
猴子数据分析
发布2021-12-27 19:12:10
发布2021-12-27 19:12:10
2K00
代码可运行
举报
文章被收录于专栏:猴子数据分析猴子数据分析
运行总次数:0
代码可运行

【面试题】某公司数据库里有3张表,销售订单表、产品明细表、销售网点表

”销售订单表”记录了销售情况,每一张数据表示哪位顾客、在哪一天、哪个网点购买了什么产品,购买的数量是多少,以及对应产品的零售价

“产品明细表”记录了公司产品的详细信息

“销售网点表”记录了公司的销售网点

销售订单表、产品明细表、销售网点表字段之间的关系如下

销售订单表和产品明细表通过“产品”字段关联,销售订单表和销售网点通过“交易网点”关联

【问题】分析品牌在2019.5-2020.4期间的复购率

【解题思路】

1.明确业务指标

要分析的是“在2019.5-2020.4期间的复购率”,复购率是业务分析中经常用到的指标。

复购率是衡量产品受欢迎度的指标。复购率高,说明产品的忠诚用户越多,这时公司需要把更多的精力和资源投入到吸引、引导在用户的复购上。

复购率低说明产品的忠诚用户少,需要把资源和精力用在提升用户的转化率上。

复购率 =一定时间内购买次数大于1次的人数/所有购买的用户数

举个例子,3月份购买产品的100个人中有30个人购买了2次。3月份的总的复购人数为30人,复购率=一定时间内购买次数大于1次的人数(30)/所有购买的用户数(100)=30%

2.如何判断是否是复购呢?

不同的行业有不同的标准,一般是指发货了再购买的才算复购,同一天购买的不算是复购。

也就是日期不同的,再次购买的用户算是复购。

在“销售订单表”中,需要先用if函数判断用户(顾客ID字段)购买次数,大于1的为复购,标记为1,否则标记为0

代码语言:javascript
代码运行次数:0
运行
复制
if(count(distinct (a.顾客ID))>1,1,0)

然后再用汇总函数(count)计数

代码语言:javascript
代码运行次数:0
运行
复制
count(distinct(a.顾客ID))

这样,复购率 =一定时间内购买次数大于1次的人数/所有购买的用户数

代码语言:javascript
代码运行次数:0
运行
复制
if(count(distinct (a.顾客ID))>1,1,0)/
   count(distinct(a.顾客ID)) as 复购率

3.不同日期的复购

一般按不同日期的购买为复购,需要把“销售订单表”复制为2个表,用不同的日期取交集,取出不同日期购买的顾客/次数,如下图

代码语言:javascript
代码运行次数:0
运行
复制
from 销售订单表 as a
inner join  销售订单表 as b
on a.交易日期!=b.交易日期

把前面步骤里的SQL组合到一起,最终得到分析复购率的SQL:

代码语言:javascript
代码运行次数:0
运行
复制
select 
   if(count(distinct (a.顾客ID))>1,1,0)/
   count(distinct(a.顾客ID)) as 复购率
from 销售订单表 as a
inner join  销售订单表 as b
on a.交易日期!=b.交易日期
and a.交易日期 between "2019-05-01" and "2020-04-30";

得到复购率=0.2=20%

【本题考点】

1.此题重点查看对业务的理解,必须先清楚业务的指标的含义。常用的指标可以回顾《衡量业务:指标体系》

2.考察if判断函数的应用

3.内联结inner join的应用

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 猴子数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档