【MySQL项目-淘宝用户行为分析】构建指标体系

2.构建指标体系

人-货-场
2.1 用户指标体系
基础指标体系(PV/UV/留存率)+RFM模型分析
2.1.1 浏览量

select dates,count(behavior) as "浏览量"
from userbehavior
where behavior="pv"
group by dates
order by dates

2.1.2 留存率

【MySQL项目-淘宝用户行为分析】构建指标体系_第1张图片

【MySQL项目-淘宝用户行为分析】构建指标体系_第2张图片

2.1.3 RFM模型

RFM模型
重要高价值客户:最近一次消费较近而且消费频率较高的客户
重要唤回客户:最近一次消费较远且消费频率较高的客户
重要深耕客户:最近一次消费较近且消费频率较低的客户
重要挽回客户:最近一次消费较远且消费频率较低的客户

– R部分

-- 获取最近购买时间 rec_buy_time
drop view if exists user_recency;
create view user_recency as 
select user_id,max(dates) as rec_buy_time
from userbehavior
where behavior="buy"
group by user_id
order by rec_buy_time

-- 按最近购买时间进行等级划分,根据距离某时间的间隔天数赋分 r_value
select user_id,rec_buy_time,
(case when datediff("2017-12-03",rec_buy_time)<=2 then 5
when datediff("2017-12-03",rec_buy_time)<=4 then 4
when datediff("2017-12-03",rec_buy_time)<=6 then 3
when datediff("2017-12-03",rec_buy_time)<=8 then 2
else 1 end) as r_value
from user_recency

– F部分

-- 获取购买次数
create view frequency as
select user_id,count(user_id) as buy_frenq
from userbehavior
where behavior="buy"
group by user_id

-- 打分
select user_id,buy_frenq,
(case when buy_frenq<=2 then 1
when buy_frenq<=4 then 2
when buy_frenq<=6 then 3
when buy_frenq<=8 then 4
else 5 end) as "f_values"
from frequency

– 整合

-- R均值
select avg(r_value) from r_level
-- F均值
select avg(f_values) from f_level

在这里插入图片描述
在这里插入图片描述
– 由于没有M值,所以根据R和F将用户分为四类

select a.*,b.f_values,
(case when a.r_value>4.2656 and b.f_values>1.7347 then "重要高价值客户"
when a.r_value<4.2656 and b.f_values>1.7347 then "重要唤回客户"
when a.r_value>4.2656 and b.f_values<1.7347 then "重要深耕客户"
when a.r_value<4.2656 and b.f_values<1.7347 then "重要挽回客户"
from r_level a,f_level b
where a.user_id=b.user_id

2.2 商品指标体系
2.2.1 pv、buy、fav、cart,购买转化率

-- 按照item_id
select item_id,count(case when behavior="pv" then 1 else null end) as "点击量",
count(case when behavior="fav" then 1 else null end) as "收藏量",
count(case when behavior="cart" then 1 else null end) as "加车量",
count(case when behavior="buy" then 1 else null end) as "购买量",
count(distinct case when behavior="buy" then 1 else null end)/ count(distinct user_id) as "buy_rate" 
from userbehavior
group by item_id

-- 按照category_id
select category_id,count(case when behavior="pv" then 1 else null end) as "点击量",
count(case when behavior="fav" then 1 else null end) as "收藏量",
count(case when behavior="cart" then 1 else null end) as "加车量",
count(case when behavior="buy" then 1 else null end) as "购买量",
count(distinct case when behavior="buy" then 1 else null end)/ count(distinct user_id) as "buy_rate" 
from userbehavior
group by category_id

【MySQL项目-淘宝用户行为分析】构建指标体系_第3张图片
【MySQL项目-淘宝用户行为分析】构建指标体系_第4张图片

2.3 平台指标体系
2.3.1 按日期统计 pv、buy、cart、fav、购买转化率

select dates,count(case when behavior="pv" then 1 else null end) as "点击量",
count(case when behavior="fav" then 1 else null end) as "收藏量",
count(case when behavior="cart" then 1 else null end) as "加车量",
count(case when behavior="buy" then 1 else null end) as "购买量",
count(distinct case when behavior="buy" then 1 else null end)/ count(distinct user_id) as "buy_rate" 
from userbehavior
group by dates

【MySQL项目-淘宝用户行为分析】构建指标体系_第5张图片
2.3.2 行为路径

create view path as
select a.* 
from (select user_id,item_id,
lag(behavior,4) over (partition by user_id,item_id order by dates) lag_4,
lag(behavior,3) over (partition by user_id,item_id order by dates) lag_3,
lag(behavior,2) over (partition by user_id,item_id order by dates) lag_2,
lag(behavior,1) over (partition by user_id,item_id order by dates) lag_1, behavior,
rank() over (partition by user_id,item_id order by dates desc) as rank_number 
from userbehavior) as a 
where a.rank_number=1 and a.behavior="buy"

【MySQL项目-淘宝用户行为分析】构建指标体系_第6张图片

-- 拼接
select concat(ifnull(lag_4,"空"),"-",ifnull(lag_3,"空"),"-",ifnull(lag_2,"空"),"-",ifnull(lag_1,"空"),"-",behavior) as "行为路径" ,count(distinct user_id) 
from path
group by 1

【MySQL项目-淘宝用户行为分析】构建指标体系_第7张图片

你可能感兴趣的:(数据挖掘,数据分析,人工智能)