适用场景
- 周会临时被问某渠道复购怎么样,要当场写出查询
- 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 星号,字段名要写全