mysql复购率_MYSQL系列(5) 电商常用指标查询

本文介绍了如何使用MySQL查询电商数据,包括统计不同月份的下单人数,计算3月份的复购率和回购率。复购率是购买两次以上的人数占比,而回购率则是用户在下一个月仍有购买记录的比例。同时,还展示了计算用户第一次和最后一次消费间隔天数的方法。
摘要由CSDN通过智能技术生成

表:order ,字段:orderid, userid, isPaid, price, paidTime

表:user,字段: userid, sex, birth

1.统计不同月份下单人数

select month(date_format(paidtime, '%Y-%m-%d')), count(distinct userid)

from order

where isPaid = '已支付'

group by month(date_format(paidtime, '%Y-%m-%d'));

2.统计3月份回购率和复购率

2.1 3月份复购率

复购率:3月份中购买两次以上的人数占3月份总购买人数的比例

? 3月份购买人数

select userid, count(userid) as count_userid

from order

where ispaid = '已支付'

and month(date_format(paidtime, '%Y-%m-%d')) = 3

group by userid;

? 复购率 =3月份购买两次以上的人数/ 对3月份复购人数统计去重

select count(t.userid) as 购买人数, count(if(t.count_userid>1, 1, null)) as '复购人数',

count(if(t.count_userid>1, 1, null)) / count(t.userid) as '复购率'

from (select userid, count(userid) as count_userid

from order

where ispaid = '已支付'

and month(date_format(paidtime, '%Y-%m-%d')) = 3

group by userid

) t

2.2 用户回购率

? 运用子查询,筛选出第二个月有购买记录的情况,然后进行count

select t1.m, count(t1.userid), count(t2.userid)

from (select userid), date_format(paidtime, '%Y-%m-01') as m

from order

where ispaid = '已支付'

group by userid, date_format(paidtime, '%Y-%m-01')

) as t1

left join

(select userid, date_format(paidtime, '%Y-%m-01') as m

from order

where ispaid = '已支付'

group by userid, date_format(paidtime, '%Y-%m-01')

) as t2

on t1.userid = t2.userid and t1.m = date_sub(t2.m, INTERVAL 1 month)

group by t1.m

统计第一次和最后一次消费间隔多久

select userid, datediff(max(paidtime), min(paidtime))

from order

where ispaid = '已支付'

group by userid

having count(1) > 1

原文:https://www.cnblogs.com/yangjiez/p/12105693.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值