| 用途 | 排名与窗口聚合 |
|---|---|
| 常用 | ROW_NUMBER() RANK() DENSE_RANK() LAG() LEAD() SUM() OVER() |
| 结构 | OVER(PARTITION BY … ORDER BY …) |
按用户取最新一单
按用户取最新一单
SELECT * FROM (
SELECT o.*, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC) AS rn
FROM orders o
) t WHERE rn = 1;累计金额与环比
累计金额与环比
SELECT id, amount,
SUM(amount) OVER (ORDER BY id) AS cum_amount,
LAG(amount) OVER (ORDER BY id) AS prev_amount
FROM orders;窗口函数不能写在 WHERE 里,需要外层子查询过滤排名(rn=1)或用 QUALIFY 类改写。