指标解释

如何计算复购率/回购率

计算方法一:复购的人 复购率 = 单位时间内购买次数大于1的人/所有购买的人 例如: 一段时间内,10个人中有3个人购买2次,这3个人中有一个人又购买了一次,累计复购人数为3人,则这段时间内的复购率为30%。

计算方法二:复购次数 复购率 = 单位时间内复购次数/所有购买的人 例如: 一段时间内,10个人中有3个人购买2次,这3个人中有一个人又购买了一次,累计复购次数为4次,则这段时间内的复购率为40%。

复购和回购的区别

复购是一个单位时间内的多次购买,回购是在下一个单位时间内仍然购买。 例如: 6月总共100人购买产品,其中有10人在6月购买了2次,5人在6月购买了3次。 按照方法一计算,6月的复购率为15% 按照方法二计算,6月的复购率为20% 若6月购买过产品的100个人中有10个在7月又购买了,则7月的回购率为10%。

何时关注复购?

90天内重复购买率达到1%~15%;说明你处于用户获取模式;把更多的精力和资源投入到新用户获取和转化; 90天内重复购买率达到15~30%;说明你处于混合模式;平衡用在新用户转化和老用户留存、复购上的精力和资源; 90天内重复购买率达到30%以上;说明你处于忠诚度模式;把更多的精力和资源投入到用户复购上;上述观点出自《精益数据分析》,跟本人无关。

SQL题

题目出自《七周成为数据分析师》。

建表导入数据

DROP TABLE IF EXISTS orderinfo;

CREATE TABLE orderinfo ( id int, userid int, ispaid varchar(3), price decimal(10, 2), paidtime datetime NULL );

DROP TABLE IF EXISTS userinfo;

CREATE TABLE userinfo ( userid int, sex varchar(3) NULL, birth date NULL );

# 设置允许从本地导入文件

SET GLOBAL local_infile=1;

load data local infile 'F:/order_info_utf.csv' into table test.orderinfo fields terminated by ',' optionally enclosed by "'" escaped by '' lines terminated by '\r\n';

load data local infile 'F:/user_info_utf.csv' into table test.userinfo fields terminated by ',' optionally enclosed by "'" escaped by '' lines terminated by '\r\n' (userid,sex,birth);

我这边选择使用load data语句将csv导入mysql,你也可以选择使用可视化界面导入,例如SQLyog,Navicat等。语句导入的执行效率较高。下图为使用Navicat导入的效果。

下图为使用load data命令导入的效果。

1. 统计不同月份已支付的订单数,下单人数

SELECT CONCAT(YEAR(paidtime), '/', MONTH(paidtime)) AS 下单年月

, COUNT(*) AS 支付订单数, COUNT(DISTINCT userid) AS 下单人数

FROM orderinfo

WHERE ispaid = '已支付'

GROUP BY 下单年月;

2. 统计不同月份的回购率和复购率(复购率按照下单人数来算)

SELECT 下单年月, COUNT(c) AS 下单人数

, COUNT(if(c > 1, 1, NULL)) AS 当月复购人数

, concat(round(COUNT(if(c > 1, 1, NULL)) / COUNT(c) * 100, 2), '%') AS '当月复购率'

FROM (

SELECT CONCAT(YEAR(paidtime), '/', MONTH(paidtime)) AS 下单年月

, COUNT(userid) AS c

FROM orderinfo

WHERE ispaid = '已支付'

GROUP BY 下单年月, userid

) a

GROUP BY 下单年月;

SELECT a.date, COUNT(a.userid) AS 当月购买人数, COUNT(b.userid) AS 次月回购人数

, concat(round(COUNT(b.userid) / COUNT(a.userid) * 100, 2), '%') AS 次月回购率

FROM (

SELECT DATE_FORMAT(paidtime, '%Y-%m-%01') AS date, userid

FROM orderinfo

WHERE ispaid = '已支付'

GROUP BY date, userid

ORDER BY userid

) a

LEFT JOIN (

SELECT DATE_FORMAT(paidtime, '%Y-%m-%01') AS date, userid

FROM orderinfo

WHERE ispaid = '已支付'

GROUP BY date, userid

ORDER BY userid

) b

ON a.userid = b.userid

AND a.date = date_sub(b.date, INTERVAL 1 MONTH)

GROUP BY date

3. 统计多次消费的用户,第一次和最后一次消费时间的间隔

SELECT userid

, DATEDIFF(MAX(paidtime), MIN(paidtime)) AS 间隔天数

FROM orderinfo

WHERE ispaid = '已支付'

GROUP BY userid

HAVING COUNT(userid) > 1;

4. 统计男女消费频次是否有差异

SELECT sex, AVG(c) AS 消费频次

FROM (

SELECT COUNT(*) AS c, sex

FROM orderinfo o

INNER JOIN userinfo u ON o.userid = u.userid

WHERE sex IS NOT NULL

AND ispaid = '已支付'

GROUP BY o.userid

) a

GROUP BY sex

5. 统计男女消费金额是否有差异

SELECT sex, AVG(s) AS 消费金额

FROM (

SELECT SUM(price) AS s, sex

FROM orderinfo o

INNER JOIN userinfo u ON o.userid = u.userid

WHERE sex IS NOT NULL

AND ispaid = '已支付'

GROUP BY o.userid

) a

GROUP BY sex

6. 统计不同年龄段的用户消费金额是否有差异

SELECT CASE

WHEN age BETWEEN 0 AND 9 THEN '0-9岁'

WHEN age BETWEEN 10 AND 19 THEN '10-19岁'

WHEN age BETWEEN 20 AND 29 THEN '20-29岁'

WHEN age BETWEEN 30 AND 39 THEN '30-39岁'

WHEN age BETWEEN 40 AND 49 THEN '40-49岁'

WHEN age BETWEEN 50 AND 59 THEN '50-59岁'

WHEN age BETWEEN 60 AND 69 THEN '60-69岁'

WHEN age BETWEEN 70 AND 79 THEN '70-79岁'

WHEN age BETWEEN 80 AND 89 THEN '80-89岁'

ELSE NULL

END AS 年龄段, round(AVG(price), 2) AS 平均消费

FROM orderinfo o

INNER JOIN (

SELECT userid, year(now()) - year(birth) AS age

FROM userinfo

WHERE year(birth) > 1900

) a

ON (o.userid = a.userid

AND age IS NOT NULL

AND ispaid = '已支付')

GROUP BY 年龄段

HAVING 年龄段 IS NOT NULL

ORDER BY 年龄段

7. 统计消费的二八法则,消费的top20%用户,贡献了多少额度

SELECT @sum_price := SUM(price)

, @count_user := COUNT(DISTINCT userid)

FROM orderinfo

WHERE ispaid = '已支付';

SELECT SUM(s) AS '前20%累计消费'

, concat(round(SUM(s) * 100 / @sum_price, 2), '%') AS '占比'

FROM (

SELECT userid, SUM(price) AS s, row_number() OVER (ORDER BY SUM(price) DESC) AS r

FROM orderinfo

WHERE ispaid = '已支付'

GROUP BY userid

) a

WHERE a.r <= @count_user * 0.2

数据数据集及代码下载链接:百度云​pan.baidu.com

提取码:xarx

mysql复购率_MySQL_复购回购率相关推荐

  1. SQL分析品牌在2019.5-2020.4期间的复购率(复购率理解、inner join)

    [面试题]某公司数据库里有3张表,销售订单表.产品明细表.销售网点表 "销售订单表"记录了销售情况,每一张数据表示哪位顾客.在哪一天.哪个网点购买了什么产品,购买的数量是多少,以及 ...

  2. mysql求回购率_用户行为分析——回购率、复购率(SQL、Python求解)

    有一个多月没有用Python了,有些生疏o(╥﹏╥)o.通过秦路老师的一道题目,分别使用sql和python求解,顺便复习下python点,重点关注[复购率].[回购率]的解法 ☞秦路老师视频讲解(使 ...

  3. 如何用sql计算回购率、复购率指标

    这6道sql题都很好,建议都过一遍: 考察知识点: 回购率.复购率的理解 子查询 inner join 重点推荐第2题,第5题,第6题 理解需求.理解题意 (★★★★★) datediff ceil ...

  4. MySQL中用户订单复购率的计算

    1.项目需求(计算复购率) 订单表中有用户ID.订单金额.每笔订单的下单时间等信息,需要统计每个月在接下来几个月用户复购情况 // 创建数据表 create table orders( order_i ...

  5. 工作问题:SQL求解用户复购率

    SQL求解用户复购率 1.说说问题 2.解决方案 3.附加需求:求每个月总体的复购率 4.附录:输入数据结构及数据SQL 也可在 微信公众号 上观看 1.说说问题 遇到了一个问题:给定一个订单表,里面 ...

  6. Python计算商品复购率

    1. Python计算产品复购率 需求: 给出数据商品购买数据,数据格式.csv,包含:购买月份.手机号,根据该数据计算产品的复购率. 复购率算法: 算法一:单位时间内(按每月):R = 复购人数/总 ...

  7. java统计excel数据_数据分析实战——EXCEL实现复购率计算

    这是数据分析实战的第三篇(复购率计算篇),本文提供真实数据(脱敏),并梳理复购率计算思路和技巧,通过15分钟的阅读和实践,读者即可根据自己的订单数据灵活计算业务涉及到的复购率了.(实战数据在文末) 相 ...

  8. 成都榆熙:复购率是什么?商家可以提升吗?

    很多商家随着拼多多店铺的发展,也开始意识到用户复购率的重要性,越来越多的商家开始想要提升店铺复购率,那么关于复购率这个东西,你又知道多少呢?一起和榆熙电商小编来了解一下吧. 一.什么是复购率? &qu ...

  9. mysql复购率_Mysql与Pyhton实现复购率和回购率

    一.复购率 复购率:一段时间内,购买2次及以上客户人数,占该时间段内购买过的总人数的比重. 例如:一个月以内,购买该商品超过两次的人有50个人,一个月内买过该商品的人有100个人,该月内复购率就是50 ...

最新文章

  1. JVM启动流程和内存结构
  2. ASP.NET MVC2 Web项目中公用类库的问题
  3. 物体检测轻松上手:精度与速度实现兼得
  4. 深入Java关键字null
  5. 困难时拉你一把的图片_2019早上好表情图片合集 早晨祝福语动画
  6. Cloud for Customer里的Shell menu manager
  7. Morpheus - DNS Spoofing
  8. Linux包系列的知识(附:Ubuntu16.04升级到18.04的案例)
  9. WCF 内存入口检查失败 Memory gates checking failed
  10. android activity查询,android中activity.findViewById()方法查找的是什么?
  11. 重读《JavaScript DOM编程艺术》(第一版)
  12. Java中的锁原理、锁优化、CAS、AQS
  13. Linux查看磁盘是否被占满,怎么查看Linux磁盘空间是否满了?
  14. eclipse配置java环境变量_eclipse配置环境变量
  15. java学习——JavaScript入门
  16. 一加手机怎么root权限_一加手机怎么解除root权限
  17. 写给Python社群的第1课:初识Python,开篇知识点就选字符串吧~
  18. 面向对象核心(继承)
  19. python 培训线下
  20. SIP: From ,Contact, Via 和 Record-Route/Route head字段详解

热门文章

  1. 腾讯辟谣心悦3玩家“特权”;共享充电宝陷入生死危机
  2. 史上最详细sql注入wp
  3. wps excel 多列数据同时筛选即高级筛选的用法
  4. 奇数值结点链表 (20 分)
  5. C 进阶内存四区(3)
  6. [组合数学] NC13611树 (逆元的计算)
  7. FPS显示和修改——unity3D
  8. tenacity 报错_tenacity 重试
  9. JS区分中英文字符的两种方法
  10. 求极值函数-MATLAB