WEEK 04

增长团队入场:窗口函数

公司拿到融资,增长团队进场,user_logins 登录日志接了进来。他们不问「总共多少」,问「排名第几」「比上个月涨了多少」「连续登录了多少天」。GROUP BY 不再够用--窗口函数进场,这也是面试的分水岭。
目标:这周决定你是「会 SQL」还是「SQL 不错」。经典题型形成肌肉记忆。
0 / 7 天
剧情 增长团队接入 30 万行登录日志,第一个需求就让你愣住:「每条登录记录旁边,带上这个用户总共登录过几次。」--行不能被压掉,还得聚合。
练 · 60 min
  1. 跑 seed.sql「W4」段导入 user_logins(30 万行)
  2. 一条 SQL 同时输出每条登录记录和该用户的登录总次数
  3. 用 GROUP BY 实现「每用户登录次数」,对比两者返回行数
  4. 试着在 WHERE 里用窗口函数,记下报错;再用子查询包一层解决
  5. 用 WINDOW 子句定义一次窗口,被三个函数复用
过关用一句话讲清窗口函数和 GROUP BY 的区别,并解释为什么 WHERE 里用不了。
专注视图 ->
剧情 增长要「每个类目销量 TOP3 商品」和「消费额第二高的用户」--排名需求扎堆来了。
练 · 65 min
  1. 同一查询里同时输出三种排名,找一组并列数据观察差异
  2. 查每个一级类目销售额 TOP3 的商品
  3. 用 row_number 对重复登录记录去重,每个用户每天只留一条
  4. 用 ntile(4) 把用户按累计消费分成四档并统计每档人数
  5. 查「消费额第二高」的用户(经典题,注意并列情况怎么处理)
过关不查资料手写出「每组 TOP N」模板;能说清三种排名函数在并列时分别输出什么。
专注视图 ->
剧情 「上个月比这个月少了多少?」「用户两单之间隔了几天?」增长分析师嘴里的环比、同比、下单间隔,全都建立在「拿上一行」这个动作上。
练 · 65 min
  1. 算月度 GMV 的环比增长率
  2. 算每个用户相邻两次下单的间隔天数
  3. 用 lag(x, 12) 算同比(数据不够 12 个月就造小表验证)
  4. 用 first_value 给每行带上该用户的首单金额,计算与首单的差额
  5. 用 last_value 取「该用户最后一单金额」,复现返回当前行的现象
过关能解释 last_value 为什么要改窗口框架才正确。
专注视图 ->
剧情 增长要「7 日滑动 GMV」「累计 GMV 曲线」。你发现同样的 sum() OVER (),写不写 ORDER BY 结果完全不同。
练 · 60 min
  1. 算 7 日移动平均 GMV(ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)
  2. 算每日累计 GMV
  3. 造一组有重复排序值的数据,对比 ROWS 与 RANGE 的结果差异
  4. 去掉 ORDER BY 再跑一次累计求和,解释结果为什么变了
  5. 用正确的框架修正 D24 第 5 题的 last_value
过关说出默认框架是什么、在什么数据下会给出反直觉的结果。
专注视图 ->
剧情 老板问了个致命问题:「我们 80% 的 GMV 是多少头部用户贡献的?」--组内占比与百分位专场。
练 · 70 min
  1. 每个商品销售额占其所属一级类目的比例
  2. 每个一级类目销售额占全站的比例(同一条 SQL 里两个占比都要有)
  3. 每个用户消费额的百分位排名
  4. 每个一级类目的价格中位数
  5. 每笔订单金额与该用户平均客单价的差额
过关一条 SQL 输出「商品 | 销售额 | 占类目% | 占全站%」四列,两个占比列各自求和自洽。
专注视图 ->
剧情 增长甩来他们的经典题库:连续登录、次日留存、漏斗、头部贡献……这 12 道题也是互联网面试的常驻嘉宾。
练 · 90 min · 这 12 题要背下来
  1. 查连续登录 7 天及以上的用户(差值分组法)
  2. 把连续的登录日期区间合并成「起止区间」
  3. 算次日留存率(注册次日是否登录)
  4. 算 7 日留存率
  5. 每个一级类目销量 TOP3 商品
  6. 销售额排名,并列名次要正确
  7. 算每个用户的消费额累计占比,找出贡献 80% GMV 的头部用户
  8. 下单 -> 支付的时间漏斗转化率
  9. 找出 GMV 连续 3 天上涨的日期
  10. 每个用户的第 2 笔订单
  11. 算每个一级类目的销售额中位数
  12. 同比环比一起输出的月度报表
过关12 题全部跑通;第 1、3、5 题能闭卷重写。
专注视图 ->
剧情 入职满月(第 28 天)。一次 90 分钟闭卷大测,检验前四周的全部家当。
10 题构成 · 120 min
  1. 3 道窗口函数题(含 1 道连续区间)
  2. 2 道递归 / LATERAL 题
  3. 5 道多表聚合报表题
  4. 交卷后逐题写错因,更新 mistakes.md
  5. 重绘一张前四周的知识地图
过关10 题正确 ≥ 7 题。
专注视图 ->