当前位置: 首页 > news >正文

SQL 实战:用户访问 → 下单 → 支付全流程转化率分析

目录

一、前言

二、业务理解

三、数据结构示例

四、SQL 实现思路

五、进阶拓展

1. 按渠道分组统计

2.按日期维度看趋势

3. 留存衍生:支付后复购率

六、总结


一、前言

在数据分析面试中,[转化率] 是出现频率最高的指标之一。

尤其是电商类场景,从用户访问到下单再到支付,是最经典的业务漏斗。

今天我们用一段完整SQL,带你搞懂:

如何用 SQL 计算访问→下单→支付的全流程转化率。


二、业务理解

在典型的用户转化链路中:

访问 -> 下单 -> 支付

我们希望了解:

  • 有多少人访问了?
  • 其中有多少人下了单?
  • 又有多少人最终支付成功?

于是我们定义三个指标:

指标名称含义公式
访问转下单率下单用户数 / 访问用户数衡量访问后下单的比例
下单转支付率支付用户数 / 下单用户数衡量下单后支付的比例
总体转化率支付用户数 / 访问用户数衡量整体成交转化效果

三、数据结构示例

假设我们有三张表:

表名含义字段说明
visit_log用户访问日志user_id, visit_time
order_log下单记录表user_id, order_id, order_time
pay_log支付记录表order_id, pay_time

四、SQL 实现思路

Step 1:统计每个阶段人数

-- 访问人数
SELECT COUNT(DISTINCT user_id) AS visit_uv FROM visit_log;--下单人数
SELECT COUNT(DISTINCT user_id) AS order_uv FROM order_log;--支付人数(需关联订单)
SELECT COUNT(DISTINCT o.user_id) AS pay_uv
FROM order_log o
JOIN pay_log p ON o.order_id = p.order_id;

Step 2:组合计算转化率(CTE写法)

WITH
visit AS (SELECT COUNT(DISTINCT user_id) AS visit_uv FROM visit_log
),
ord AS (SELECT COUNT(DISTINCT user_id) AS order_uv FROM order_log
),
pay AS (SELECT COUNT(DISTINCT o.user_id) AS pay_uvFROM order_log o JOIN pay_log p ON o.order_id = p.order_id 
)
SELECT visit_uv,order_uv,pay_uv,ROUND(order_uv * 1.0 / visit_uv, 4) AS visit_to_order_rate,ROUND(pay_uv * 1.0 / order_uv, 4) AS order_to_pay_rate,ROUND(pay_uv * 1.0 / visit_uv, 4) AS total_conversion_rate
FROM visit, ord, pay;

Step 3:结果展示

指标数值含义
visit_uv10,000访问用户数
order_uv3,500下单用户数
pay_uv2,800支付用户数
visit_to_order_rate0.35访问→下单转化率
order_to_pay_rate0.80下单→支付转化率
total_conversion_rate0.28总体转化率

五、进阶拓展

1. 按渠道分组统计

想分析不同来源(如广告投放、搜索、自然流量)的转化效果,可以这样写:

SELECTv.channel,COUNT(DISTINCT v.user_id) AS visit_uv,COUNT(DISTINCT o.user_id) AS order_uv,COUNT(DISTINCT p.user_id) AS pay_uv,ROUND(COUNT(DISTINCT o.user_id)*1.0 / COUNT(DISTINCT v.user_id), 4) AS visit_to_order_rate,ROUND(COUNT(DISTINCT p.user_id)*1.0 / COUNT(DISTINCT o.user_id), 4) AS order_to_pay_rate
FROM visit_log v 
LEFT JOIN order_log o ON v.user_id = o.user_id
LEFT JOIN (SELECT o.user_idFROM order_log oJOIN pay_log p ON o.order_id = p.order_id
)p ON v.user_id = p.user_id
GROUP BY v.channel;

这样你就能快速得到:

  • 每个渠道的访问人数、下单人数、支付人数
  • 各阶段转化率对比

2.按日期维度看趋势

可以按天(或周)分析转化率的变化:

SELECTDATE(v.visit_time) AS dt,COUNT(DISTINCT v.user_id) AS visit_uv,COUNT(DISTINCT o.user_id) AS order_uv,COUNT(DISTINCT P.user_id) AS pay_uv,ROUND(COUNT(DISTINCT o.user_id)*1.0 / COUNT(DISTINCT v.user_id), 4) AS visit_to_order_rate,ROUND(COUNT(DISTINCT p.user_id)*1.0 / COUNT(DISTINCT o.user_id), 4) AS order_to_pay_rate
FROM visit_log v
LEFT JOIN order_log o ON v.user_id = o.user_id
LEFT JOIN (SELECT FROMJOIN
)p ON v.user_id = p.user_id
GROUP BY DATE(v.visit_time)
ORDER BY dt;

3. 留存衍生:支付后复购率

在支付阶段基础上,你还可以计算:

  • 支付后 7 日复购人数 / 支付用户数
SELECTCOUNT(DISTINCT CASE WHEN DATEDIFF(next_order_time, pay_time) <= 7 THEN user_id END) / COUNT(DISTINCT user_id) AS repurchase_rate_7d
FROM ...

六、总结

要点说明
核心逻辑明确三个阶段:访问 → 下单 → 支付
技术实现CTE / JOIN / DISTINCT
进阶方向分渠道、分时间、留存衍生分析
面试加分能讲出业务含义 + 优化思路(如去重口径、时间范围)

一句话总结:

SQL 转化率分析的关键,不是语法复杂,而是要“用 SQL 思维还原业务漏斗”。

http://www.dtcms.com/a/606128.html

相关文章:

  • wordpress数据库修改主题seo体系网站的建设及优化
  • 批量更新 JAR 内配置文件的通用 Bash 脚本
  • 第四十一篇:正则表达式(Regex)终极指南:语法、re模块与实战案例
  • 建设网站用新域名还是老域名网络热词2022
  • 人称代词和物主代词
  • 16、alertmanager告警路由
  • Prim 与 Kruskal 算法在最小生成树中的应用
  • php视频网站开发实战企业怎么做app网址
  • redis不能获取连接,Could not get a resource from the pool
  • 做百度推广网站咱们做春节网页制作素材
  • Oracle 中的物理备份
  • 做服装网站需要什么条件3d模拟装修设计软件
  • 如何在手机上开自己的网站建行app怎么注册登录
  • 跨平台Hybrid App开发实战指南
  • 网站开发struts瑞昌网络推广
  • winfrom 自定义空间 ,UcCustomDataGridView
  • Spring Boot环境配置
  • 新版Xsens Link可穿戴式动捕设备
  • 淘客网站如何做推广莱芜网站建设案例
  • Linux 上怎么跑 Python 脚本
  • 微服务污点分析
  • 科学小制作 小发明 简单 手工网站seo策划方案
  • 手搓UEFI.h
  • MySQL(六) - 视图管理
  • R语言在线编译器 | 提供快速便捷的编程环境,助力数据分析与学习
  • 网站没有备案是假的吗什么是大型门户网站
  • 做电脑网站与手机上的一样吗网站建设维护需要懂哪些知识
  • UE5 PAK 封包 加载实用方法
  • UE5蓝图实现物体自动沿样条线运动
  • 基于Fovea算法的AI机械手目标检测模型详解