现在有order表,member_id,drug_name,order_trade_no ,三个字段,求每个drug_name的复购率,复购定义=order_trade_no 大于2次的member_id,如何算出每个商品的复购率是多少
时间: 2024-05-01 21:19:50 浏览: 49
可以按照以下步骤计算每个drug_name的复购率:
1. 根据drug_name分组,统计每个drug_name对应的member_id和order_trade_no的组合数,以及order_trade_no大于等于2的组合数。可以使用如下SQL语句实现:
```
SELECT drug_name, COUNT(DISTINCT CONCAT(member_id, '_', order_trade_no)) AS total_combinations, COUNT(DISTINCT CASE WHEN order_trade_no >= 2 THEN CONCAT(member_id, '_', order_trade_no) END) AS repeat_combinations
FROM order
GROUP BY drug_name
```
2. 在上述查询结果的基础上,计算每个drug_name的复购率,即repeat_combinations与total_combinations的比值。可以继续使用SQL语句实现:
```
SELECT drug_name, repeat_combinations / total_combinations AS repeat_rate
FROM (
SELECT drug_name, COUNT(DISTINCT CONCAT(member_id, '_', order_trade_no)) AS total_combinations, COUNT(DISTINCT CASE WHEN order_trade_no >= 2 THEN CONCAT(member_id, '_', order_trade_no) END) AS repeat_combinations
FROM order
GROUP BY drug_name
) t
```
阅读全文