SQL 道场
返回路线图

MODULE 4 / 进阶

分析利器

窗口函数与日期/字符串——从"会查"到"会分析"的分水岭。

分析利器:窗口函数与日期/字符串

窗口函数能在"不把行合并掉"的前提下做分组计算,是迈向 senior 的关键:

SELECT customer_id, amount,
  rank() OVER (PARTITION BY customer_id ORDER BY amount DESC) AS rk
FROM orders;
  • row_number / rank / dense_rank:排名。
  • lag / lead:取前一行 / 后一行的值。
  • sum() OVER (ORDER BY ...):累计求和(running total)。
  • PARTITION BY 指定分组、ORDER BY 指定窗口内的顺序。

日期/字符串:EXTRACT(year FROM created_at) 取年份,配合字符串函数做清洗与分组。

练习(8)

  1. 1.每位客户的订单排名难度 4
  2. 2.全站订单金额排名难度 3
  3. 3.按时间的累计金额难度 5
  4. 4.上一笔订单金额难度 5
  5. 5.每位客户最大的一笔难度 5
  6. 6.每月订单数难度 4
  7. 7.拼出城市-姓名标签难度 2
  8. 8.二月的订单难度 3