第 5 站:CTE、窗口与 JSON
本站目标
使用 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 处理并列金额,解释业务差异。