近 30 天各渠道复购率的分析 SQL

用自然语言描述需求与表结构,输出可直接运行的分析 SQL 及思路说明。

更新于 2周前

适用场景

  • 周会临时被问某渠道复购怎么样,要当场写出查询
  • SQL 能跑但口径说不清,被质疑数字不对
  • 查询跑了十几分钟,想顺手把慢的原因找出来
PROMPT
运营问「哪个渠道的人更愿意回来买」,你得当场给出一条能跑的查询。要用 MySQL 8 写这段 SQL 时,用它。

【需求】
1 表是 orders,字段有 id、user_id、channel、amount、status、created_at
2 数据库是 MySQL 8,订单表约 200 万行
3 业务问题是近 30 天各渠道的复购率,复购定义为同一用户下单两次及以上
4 只统计 status 为 paid 的订单,退款单不计
5 输出字段要渠道名、下单人数、复购人数、复购率

【输出要求】
1 先用三句话讲清口径:复购怎么算、按什么分组、时间窗口卡在哪
2 给完整 SQL,字段一个不许省略,缩进和注释都要有
3 复购用子查询或 CTE 实现,不要用可能重复计数的 join 写法
4 标出这条查询可能慢在哪,给出索引建议
5 附一段说明:哪些订单被排除了、排除的理由是什么
6 不建议直接用 select 星号,字段名要写全
标签
SQL 复购率 指标口径