帮我写一个mySQL查询脚本,分析从21年1月1日-23年3月31日中,每三个自然月复购率和复购周期;如21年1月1日-21年3月31日,21年2月1日-221年4月30日
时间: 2024-05-13 18:17:24 浏览: 60
好的,以下是一个示例 mySQL 查询脚本,用于分析从21年1月1日-23年3月31日中,每三个自然月的复购率和复购周期:
```mysql
SELECT
DATE_FORMAT(order_date, '%Y-%m') AS order_month,
COUNT(DISTINCT customer_id) AS total_customers,
SUM(CASE WHEN order_count > 1 THEN 1 ELSE 0 END) AS repeat_customers,
CONCAT(
TRUNCATE(
AVG(
TIMESTAMPDIFF(
MONTH,
(
SELECT MAX(order_date)
FROM orders o2
WHERE o2.customer_id = o1.customer_id
AND o2.order_date < o1.order_date
),
order_date
)
),
2
)
) AS avg_repeat_period,
CONCAT(
TRUNCATE(
(SUM(CASE WHEN order_count > 1 THEN 1 ELSE 0 END) / COUNT(DISTINCT customer_id)) * 100,
2
),
'%'
) AS repeat_rate
FROM
orders o1
WHERE
order_date >= '2021-01-01' AND order_date <= '2023-03-31'
GROUP BY
YEAR(order_date),
FLOOR((MONTH(order_date) - 1) / 3)
ORDER BY
YEAR(order_date),
FLOOR((MONTH(order_date) - 1) / 3)
```
该脚本将 orders 表中的订单数据按照每三个自然月进行分组,并计算每个分组中的复购率和复购周期。具体来说,该脚本通过以下方式计算复购率和复购周期:
- 复购率:通过计算每个分组中的重复购买客户数和总客户数,来计算每个分组的复购率。
- 复购周期:通过计算每个分组中重复购买客户的平均复购周期,来计算每个分组的复购周期。
其中,复购周期的计算方式为:对于每个重复购买客户,计算其最近两次购买之间的月份数,并计算这些月份数的平均值作为该客户的平均复购周期。然后,对于每个分组,计算所有客户的平均复购周期的平均值作为该分组的复购周期。
注意:该脚本仅为示例,具体的查询语句可能需要根据实际情况进行调整。
阅读全文