复购率与回购率区别

1、复购率定义

按照用户计算: 在某时间窗口内重复消费用户(消费两次及以上的用户)在总消费用户中占比

  • 重复消费用户的定义,又分为两种:
    (1)按天非去重,即一个用户一天产生多笔付款交易,则算重复消费用户。
    (2)按天去重,即一个用户一天产生多笔交易付款,只算一次消费,除非在统计周期内另外一天也有消费,才算重复消费用户。

按天非去重,是目前b2c网站统计数据常用计算方法,相对计算出来的重复购买率要高于第二种。

按照交易计算: 在某时间串口内重复消费交易次数在总交易次数中占比

  • 举例:比如在某个季度中。一共产生了100笔交易,其中有20个人有了二次购买,这20人中的10个人又有了三次购买,则重复购买次数为30次,重复购买率为30%。
2、回购率定义

定义: 是某一个时间窗口内消费的用户,在下一个时间窗口仍旧消费的占比。

  • 举例:按月作为统计窗口,在1月份总共有1000名消费用户,其中有300名用户在2月份依然有过消费,则回购率为30%。
3、复购率与回购率的区别

复购率是一个时间窗口的多次消费行为,回购率是两个时间窗口内的消费行为。复购率与回购率越高,反应消费者对品牌的忠诚度就越高,反之则越低。

<think>我们正在处理一个关于MySQL客户分析的SQL查询问题。根据引用内容,通常指的是在特定时间段内,多次买产品的客户比例。而回购则指的是在后续时间段内再次买的客户比例。 根据引用[2]中的定义: - :在同一个时间段(如一个月)内多次买。 - 回购:在下一个时间段(如下一个月)内仍然买。 用户要求的是分析,因此我们将重点放在同一时间段内的重买行为上。 常见的计算方法有两种(引用[2]): 方法一: = 重买客户数 / 总买客户数(其中重买客户数指买次数大于1的客户数) 方法二: = 总买次数中除去第一次买后的次数 / 总买次数(即平均每个客户买次数-1) 但通常,指的是第一种方法,即重买客户数占总买客户数的比例。 另外,引用[1]中提供的SQL计算的是跨月的(即买月份月份不同),这实际上更接近于回购(或跨期)的概念。而用户现在需要的是(同一时间段内多次买),因此我们需要调整。 根据用户需求,我们应计算每个时间段(如每个月)内的,即在该月内买超过一次的客户数占该月总买客户数的比例。 步骤: 1. 计算每个客户在每个月的买次数。 2. 对每个月,统计总买客户数(即去重的客户数)。 3. 对每个月,统计买次数大于1的客户数(即客户数)。 4. 计算 = 客户数 / 总买客户数。 SQL查询思路: - 首先,从订单表中提取每个客户每个月的买记录,并计算每个客户每个月的买次数。 - 然后,按月份分组,计算每个月的总客户数客户数(买次数>=2的客户数)。 - 最后,计算。 假设订单表名为`orders`,包含字段`create_time`(订单创建时间)`user_id`(客户ID)。 SQL语句如下: ```sql SELECT month, COUNT(user_id) AS total_customers, -- 总买客户数 SUM(IF(buy_times >= 2, 1, 0)) AS repeat_customers, -- 客户数(买次数>=2) CONCAT(ROUND(SUM(IF(buy_times >= 2, 1, 0)) / COUNT(user_id) * 100, 2), '%') AS repeat_rate FROM ( SELECT DATE_FORMAT(create_time, '%Y-%m') AS month, user_id, COUNT(*) AS buy_times -- 每个客户当月的买次数 FROM orders GROUP BY month, user_id ) AS monthly_purchase GROUP BY month ORDER BY month; ``` 解释: 1. 子查询`monthly_purchase`:按月份客户分组,计算每个客户在每个月的买次数(`buy_times`)。 2. 外层查询:按月份分组。 - `total_customers`:该月买的总客户数(因为每个客户在子查询中只有一行,所以COUNT(user_id)就是总客户数)。 - `repeat_customers`:使用条件判断,如果买次数`buy_times`>=2,则计为1(客户),否则为0,然后求得到客户总数。 - `repeat_rate`:客户数除以总客户数,并转化为百分比字符串。 注意:这里客户定义为在当月买次数大于等于2的客户。 如果需要计算其他时间段(如按周、季度),只需调整日期格式(如`DATE_FORMAT(create_time, '%x-%v')`表示按周)。 另外,引用[1]中计算的是跨月(即回购),如果用户需要的是跨月回购,则需使用不同的方法(如引用[1]中的SQL)。但根据问题描述,用户要求的是,因此我们采用上述方法。 如果用户需要的是跨月回购,我们可以这样理解: - 回购:在某个时间段(如月)买过的客户,在下一个时间段(下个月)再次买的比例。 例如,计算6月份的回购: - 分子:5月份买过的客户中,在6月份也买的客户数(即5月客户在6月有买行为)。 - 分母:5月份的总买客户数。 但用户问题明确要求,因此我们提供上述同一时间段内的计算方法。 如果用户需要,我们也可以提供回购的计算方法,但问题只要求。 因此,我们按照的定义(同一时间段内重买)给出上述SQL。 最后,根据引用[3],我们也可以使用自连接来计算回购,但这里不展开。 请用户根据实际需求调整时间段(如将月份改为周、季度等)以及次数的定义(如买2次以上或3次以上等)。</think>### MySQL 客户分析 SQL 查询 在电商数据分析中,****是指同一时间段内多次买的用户比例,是衡量客户忠诚度的关键指标[^2]。以下是完整的分析解决方案: #### 1. 基础计算(按月统计) ```sql SELECT DATE_FORMAT(create_time, '%Y-%m') AS 买月份, COUNT(DISTINCT user_id) AS 总用户数, SUM(IF(买次数 >= 2, 1, 0)) AS 用户数, CONCAT(ROUND(SUM(IF(买次数 >= 2, 1, 0)) / COUNT(DISTINCT user_id) * 100, 2), '%') AS FROM ( SELECT user_id, DATE_FORMAT(create_time, '%Y-%m') AS 买月份, COUNT(order_id) AS 买次数 FROM orders GROUP BY user_id, DATE_FORMAT(create_time, '%Y-%m') ) AS user_monthly GROUP BY 买月份 ORDER BY 买月份; ``` #### 2. 跨期回购分析(月度回购) ```sql SELECT a.月份 AS 原始月份, b.月份 AS 回购月份, COUNT(DISTINCT b.user_id) AS 回购用户数, COUNT(DISTINCT a.user_id) AS 原始用户数, CONCAT(ROUND(COUNT(DISTINCT b.user_id) / COUNT(DISTINCT a.user_id) * 100, 2), '%') AS 回购 FROM ( SELECT DATE_FORMAT(create_time, '%Y-%m') AS 月份, user_id FROM orders GROUP BY 月份, user_id ) a LEFT JOIN ( SELECT DATE_FORMAT(create_time, '%Y-%m') AS 月份, user_id FROM orders GROUP BY 月份, user_id ) b ON a.user_id = b.user_id AND b.月份 > a.月份 -- 仅统计后续月份的回购 AND PERIOD_DIFF(b.月份, a.月份) = 1 -- 仅统计下月回购 GROUP BY a.月份 ORDER BY a.月份; ``` #### 3. 多维度分析(商品+用户) ```sql SELECT product_id, DATE_FORMAT(create_time, '%Y-%m') AS 月份, COUNT(DISTINCT user_id) AS 买用户数, SUM(IF(买次数 > 1, 1, 0)) AS 用户数, CONCAT(ROUND(SUM(IF(买次数 > 1, 1, 0)) / COUNT(DISTINCT user_id) * 100, 2), '%') AS 商品 FROM ( SELECT product_id, user_id, DATE_FORMAT(create_time, '%Y-%m') AS 月份, COUNT(order_id) AS 买次数 FROM orders GROUP BY product_id, user_id, 月份 ) AS product_analysis GROUP BY product_id, 月份 HAVING 买用户数 > 10 -- 过滤样本量过小的商品 ORDER BY 商品 DESC; ``` ### 关键概念说明: 1. ****:同一时间段内买≥2次的用户占比(如月)[^2] 2. **回购**:在后续时间段再次买的用户比例(如6月客户在7月的回购)[^3] 3. **计算逻辑**: - 先按用户+时间粒度聚合买次数 - 通过条件统计(`IF(买次数 > 1, 1, 0)`)识别用户 - 使用`COUNT(DISTINCT )`确保用户去重 ### 注意事项: 1. 时间粒度调整:将`DATE_FORMAT(create_time, '%Y-%m')`改为: - `DATE_FORMAT(create_time, '%x-%v')` 按周统计 - `QUARTER(create_time)` 按季度统计 2. 定义:修改`IF(买次数 >= 2, 1, 0)`中的阈值可调整标准 3. 性能优化:对大型数据集建议创建`(user_id, create_time)`的联合索引 > 示例数据说明:假设6月有100名客户,其中15人当月买≥2次,则月为15%;若这100人中有10人在7月再次买,则7月回购为10%[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值