Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySql场景面试题:电商业务中用户的行为路径和转化率分析

MySql场景面试题:电商业务中用户的行为路径和转化率分析

作者头像
公众号:码到三十五
发布于 2025-02-23 00:36:30
发布于 2025-02-23 00:36:30
12500
代码可运行
举报
文章被收录于专栏:设计模式设计模式
运行总次数:0
代码可运行

电商业务,一个订单表 orders 和一个用户表 users。现需要分析用户的行为路径转化率

表结构:

  1. 用户表 (users):
    • user_id (用户ID, 主键)
    • register_date (注册日期)
    • city (所在城市)
  2. 订单表 (orders):
    • order_id (订单ID, 主键)
    • user_id (用户ID, 外键)
    • order_date (订单日期)
    • amount (订单金额)

具体需求如下:

  1. 用户行为路径分析
    • 统计用户在2023年内的行为路径,包括:
      • 首次购买日期。
      • 第二次购买日期(如果有)。
      • 最后一次购买日期。
      • 购买次数。
      • 累计购买金额。
    • 按城市分组,统计每个城市的用户行为路径。
  2. 转化率分析
    • 计算以下转化率:
      • 注册到首次购买转化率:注册用户中在2023年内完成首次购买的用户占比。
      • 首次购买到第二次购买转化率:首次购买用户中完成第二次购买的用户占比。
      • 复购用户到高价值用户转化率:复购用户中累计购买金额 ≥ 10,000 元的用户占比。
  3. 用户留存分析
    • 计算用户在首次购买后的第30天、60天、90天的留存率。
    • 按城市分组,统计每个城市的用户留存率。
参考SQL
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
WITH user_orders_2023 AS (
    -- 获取2023年内的订单数据,并标记首次、第二次、最后一次购买日期
    SELECT
        u.user_id,
        u.city,
        u.register_date,
        o.order_date,
        o.amount,
        MIN(o.order_date) OVER (PARTITION BY o.user_id) AS first_order_date,
        LEAD(o.order_date, 1) OVER (PARTITION BY o.user_id ORDER BY o.order_date) AS second_order_date,
        MAX(o.order_date) OVER (PARTITION BY o.user_id) AS last_order_date,
        COUNT(o.order_id) OVER (PARTITION BY o.user_id) AS order_count,
        SUM(o.amount) OVER (PARTITION BY o.user_id) AS total_amount
    FROM
        users u
    JOIN
        orders o ON u.user_id = o.user_id
    WHERE
        o.order_date BETWEEN '2023-01-01' AND '2023-12-31'
),
user_behavior_path AS (
    -- 统计用户行为路径
    SELECT
        user_id,
        city,
        first_order_date,
        second_order_date,
        last_order_date,
        order_count,
        total_amount
    FROM
        user_orders_2023
    GROUP BY
        user_id, city, first_order_date, second_order_date, last_order_date, order_count, total_amount
),
conversion_analysis AS (
    -- 计算转化率
    SELECT
        city,
        COUNT(DISTINCT CASE WHEN first_order_date IS NOT NULL THEN user_id END) * 1.0 / COUNT(DISTINCT user_id) AS registration_to_first_purchase,
        COUNT(DISTINCT CASE WHEN second_order_date IS NOT NULL THEN user_id END) * 1.0 / COUNT(DISTINCT CASE WHEN first_order_date IS NOT NULL THEN user_id END) AS first_to_second_purchase,
        COUNT(DISTINCT CASE WHEN total_amount >= 10000 THEN user_id END) * 1.0 / COUNT(DISTINCT CASE WHEN order_count >= 2 THEN user_id END) AS repurchase_to_high_value
    FROM
        user_orders_2023
    GROUP BY
        city
),
retention_analysis AS (
    -- 计算用户留存率
    SELECT
        city,
        COUNT(DISTINCT CASE WHEN DATEDIFF(order_date, first_order_date) >= 30 THEN user_id END) * 1.0 / COUNT(DISTINCT user_id) AS retention_30d,
        COUNT(DISTINCT CASE WHEN DATEDIFF(order_date, first_order_date) >= 60 THEN user_id END) * 1.0 / COUNT(DISTINCT user_id) AS retention_60d,
        COUNT(DISTINCT CASE WHEN DATEDIFF(order_date, first_order_date) >= 90 THEN user_id END) * 1.0 / COUNT(DISTINCT user_id) AS retention_90d
    FROM
        user_orders_2023
    GROUP BY
        city
)
-- 综合输出:按城市输出用户行为路径、转化率和留存率
SELECT
    ubp.city,
    AVG(DATEDIFF(second_order_date, first_order_date)) AS avg_days_first_to_second,
    AVG(DATEDIFF(last_order_date, first_order_date)) AS avg_days_first_to_last,
    AVG(order_count) AS avg_order_count,
    AVG(total_amount) AS avg_total_amount,
    ca.registration_to_first_purchase,
    ca.first_to_second_purchase,
    ca.repurchase_to_high_value,
    ra.retention_30d,
    ra.retention_60d,
    ra.retention_90d
FROM
    user_behavior_path ubp
JOIN
    conversion_analysis ca ON ubp.city = ca.city
JOIN
    retention_analysis ra ON ubp.city = ra.city
GROUP BY
    ubp.city,
    ca.registration_to_first_purchase,
    ca.first_to_second_purchase,
    ca.repurchase_to_high_value,
    ra.retention_30d,
    ra.retention_60d,
    ra.retention_90d;

查询逻辑分解
  1. user_orders_2023:
    • 获取2023年内的订单数据,并使用窗口函数标记每个用户的首次、第二次和最后一次购买日期,以及购买次数和累计金额。
  2. user_behavior_path:
    • 统计每个用户的行为路径,包括首次购买日期、第二次购买日期、最后一次购买日期、购买次数和累计金额。
  3. conversion_analysis:
    • 计算以下转化率:
      • 注册到首次购买转化率。
      • 首次购买到第二次购买转化率。
      • 复购用户到高价值用户转化率。
  4. retention_analysis:
    • 计算用户在首次购买后的第30天、60天、90天的留存率。
  5. 综合输出:
    • 将用户行为路径、转化率和留存率结合,按城市输出最终结果。
示例输出

city

avg_days_first_to_second

avg_days_first_to_last

avg_order_count

avg_total_amount

registration_to_first_purchase

first_to_second_purchase

repurchase_to_high_value

retention_30d

retention_60d

retention_90d

北京

45.67

180.50

4.2

8500

0.80

0.60

0.25

0.50

0.40

0.30

上海

50.00

200.00

3.8

7800

0.75

0.55

0.20

0.45

0.35

0.25

考察点

  1. 行为路径分析:使用窗口函数(如 MINLEADMAX)标记用户的关键行为节点。
  2. 转化率计算:通过条件聚合计算多级转化率。
  3. 留存率计算:使用 DATEDIFF 和条件聚合计算用户留存率。
  4. 多步骤数据处理:通过 WITH 子句分步骤处理数据,提升可读性和性能。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySql场景面试题:电商业务中高净值用户行为分析
电商业务,一个订单表 orders 和一个用户表 users。你需要分析用户的购买行为,特别是那些在特定时间段内购买金额超过一定阈值的用户,并计算他们的平均购买金额、购买次数以及他们在总用户中的占比。
公众号:码到三十五
2025/01/22
1270
MySQL实战面试题(附案例答案+建表语句+模拟数据+案例深度解析),练完直接碾压面试官
使用YEAR()和MONTH()函数从signup_date字段中提取年份和月份,并匹配给定的条件。
小白的大数据之旅
2024/11/20
1960
SQL 进阶指南:掌握这些高阶技巧,让你的数据分析快人一步!
你以为 SQL 只是简单的 SELECT * FROM table?那你可就大错特错了! 在这个数据驱动的时代,真正的高手早已抛弃低效的查询方式,玩转窗口函数、递归 CTE、动态透视表,甚至用近似计算让百亿级数据秒出结果! 还在为 SQL 运行慢、分析难、报表卡死而苦恼? 别担心,这篇文章带你深入 SQL 世界,从业务思维出发,手把手拆解 用户增长、行为分析、订单转化、留存率 等核心场景,让你的数据分析能力直接起飞!
睡前大数据
2025/03/25
1000
SQL 进阶指南:掌握这些高阶技巧,让你的数据分析快人一步!
数仓用户行为漏斗分析如何SQL实现(第二节)
如果不考虑2019-02-11和2019-02-12的新增用户:2019-02-10新增100人,一天后它的留存率是30%,2天12号它的留存率是25%,3天后留存率32%;
小晨说数据
2022/03/09
1K0
数仓用户行为漏斗分析如何SQL实现(第二节)
留存专题-计算1~7日留存率
我们使用留存专题-基础数据生成数据,计算2024-01-01日~2024-01-07日新增用户的1日、2日、3日、4日、5日、6日、7日留存率
数据仓库晨曦
2024/12/19
1110
留存专题-计算1~7日留存率
12000字!实战案例!Python+SQL京东用户行为分析
项目对京东电商运营数据集进行指标分析以了解用户购物行为特征,为运营决策提供支持建议。本文采用了MySQL和Python两种代码进行指标计算以适应不同的数据分析开发环境。
用户6888863
2023/03/01
2.1K3
12000字!实战案例!Python+SQL京东用户行为分析
用户行为分析(Python)
电商、互联网、金融这三驾马车是对数据分析应用最为广泛的行业,同时也占据了就业市场上绝大多数的数据分析岗位,只因日常业务产生的海量数据蕴含着无尽的价值。 本次就通过电商角度,选取阿里天池项目中的淘宝App用户行为数据利用Python进行数据分析。
用户8949263
2022/04/08
4.8K0
用户行为分析(Python)
电商用户行为数据分析系统的设计与实现_基于大数据的用户行为分析
本文针对淘宝app的运营数据,以行业常见指标对用户行为进行分析,包括UV、PV、新增用户分析、漏斗流失分析、留存分析、用户价值分析、复购分析等内容; 本文使用的分析工具以MySQL为主,涉及分组汇总,引用变量,视图,关联查询等内容。
全栈程序员站长
2022/11/10
5.2K1
电商用户行为数据分析系统的设计与实现_基于大数据的用户行为分析
「求职」7道数据分析面试题,涵盖80%常考知识点『SQL篇』
解决痛点:本文为招聘过程中总结的7道SQL面试题,涵盖常考知识点,对于准备找工作的你会有很大帮助。
小火龙说数据
2022/06/30
6010
「求职」7道数据分析面试题,涵盖80%常考知识点『SQL篇』
大数据 面试 SQL 040 计算次日留存率
现有用户登录记录表,已经按照用户日期进行去重处理。以用户登录的最早日期作为新增日期,请计算次日留存率是多少。
数据仓库晨曦
2024/01/08
6880
大数据 面试 SQL 040 计算次日留存率
电商用户行为数据分析
随着电商平台数据量的不断积累,通过数据分析,挖掘消费者的潜在需求、消费偏好成为平台运营过程中的重要环节。
Lucky7even
2022/07/19
3.2K0
10道常考SQL笔试题
题目:在 Employees 表中,获取每个部门(department)薪资最高的员工的姓名、部门和工资。表结构如下:
SQL数据库开发
2024/09/24
2040
10道常考SQL笔试题
大数据开发面试必知必会的SQL 30题!!!
解题思路:首先需要对区域进行分组,使用的是group by,然后对每个组内的用户进行计数聚合运算,使用的是count,最后运行结果如下表所示。
王强
2021/05/18
1.8K0
大数据开发面试必知必会的SQL 30题!!!
数仓用户行为漏斗分析如何SQL实现(第三节)
sum(order_count) gmv_count 、 sum(order_amount) gmv_amount 、sum(payment_amount) payment_amount 过滤日期,以dt分组;
小晨说数据
2022/03/09
1.2K0
数仓用户行为漏斗分析如何SQL实现(第三节)
如何用SQL实现用户行为漏斗分析
1 每日活跃设备明细 dwd_start_log--->dws_uv_detail_day
大数据学习与分享
2022/05/19
2.2K0
如何用SQL实现用户行为漏斗分析
ClickHouse实战留存、路径、漏斗、session
关于用户留存模型是各大商业数据分析平台必不可少的功能,企业一般用该模型衡量用户的活跃情况,也是能直接反应产品功能价值的直接指标;如,boss想要了解商城改版后,对用户加购以及后续下单情况的影响等。如下图,这就是一个典型的留存分析功能:
小晨说数据
2022/03/10
2.1K0
ClickHouse实战留存、路径、漏斗、session
pandas实战:用户消费行为画像
该项目主要对某平台用户消费行为进行画像分析,通过pandas的灵活使用,对月销量、客户复购率、回购率、客户分层、高质量客户、留存率、消费间隔等进行多维度分析。以下为部分节选内容,完整数据和代码可在文末扫码了解👇
Python数据科学
2024/01/02
4030
pandas实战:用户消费行为画像
【收藏】MySQL 超全优化清单(可执行系列)
先从一般的语句优化开始,其实对于很多规范大家并不陌生,可就是在用的时候,无法遵从,希望今天大家再过一遍,可以养成一种良好的数据库编码习惯。
lyb-geek
2024/07/17
2680
【收藏】MySQL 超全优化清单(可执行系列)
求职 | 看了一套应届生的笔试题,老司机破防了
最近带了一个数分应届生的笔试辅导,略微有点破防,说实话,很多题让我来回答我都是答不上的——八百年不用早就已经忘完了。还有一些题目的答案可能稍微有点争议,这里拿出来寄到个大家一起瞅瞅。
做数据的二号姬
2025/04/22
640
求职 | 看了一套应届生的笔试题,老司机破防了
LeetCode面试SQL-用户购买平台
写一段 SQL 来查找每天 仅 使用手机端用户、仅 使用桌面端用户和 同时 使用桌面端和手机端的用户人数和总支出金额。
数据仓库晨曦
2024/09/24
1950
LeetCode面试SQL-用户购买平台
推荐阅读
相关推荐
MySql场景面试题:电商业务中高净值用户行为分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验