Skip to content

第 5 站:CTE、窗口与 JSON ​

← 第 4 站 | 专题笔记 | 练习答案

本站目标 ​

使用 MySQL 8.4 的 CTE、递归 CTE、窗口函数和 JSON_TABLE 表达可验证的中间粒度。

sql
WITH ranked AS (
  SELECT order_id, customer_id, total_amount,
         ROW_NUMBER() OVER (
           PARTITION BY customer_id
           ORDER BY total_amount DESC, order_id
         ) AS rn
  FROM sales_order
)
SELECT * FROM ranked WHERE rn <= 3;

真实边界 ​

CTE 提升表达力但不承诺物化或性能;窗口默认 frame 可能不是预期范围;JSON 不能逃避 schema 与索引设计。

无答案练习 ​

分别用 ROW_NUMBER、RANK、DENSE_RANK 处理并列金额,解释业务差异。

进入专题笔记

用心记录每一步成长