跳转到内容

阶段一 · SQL 表达力

这一阶段不讲 SELECTJOIN,假设你已经会。重点是那些「不知道就会绕远路」的表达工具。

  • 窗口函数:OVERPARTITION BY、框架子句,以及它和 GROUP BY 的本质区别
  • CTE 与递归 CTE:物化行为在 PG 12 之后的变化(MATERIALIZED / NOT MATERIALIZED
  • LATERAL:什么时候子查询替代不了它
  • DISTINCT ON:Postgres 独有的取 top-1 写法
  • 聚合的 FILTER 子句、GROUPING SETS / ROLLUP / CUBE
  • 用一条 SQL 算出「每个用户第 2 次下单的时间」。
  • DISTINCT ON 和窗口函数取 top-1,两者的语义与性能差别是什么?各自适合什么场景?
  • 举一个 LATERAL 不可被普通子查询替代的例子。
  • WITH x AS (...) 在 PG 12 前后的执行行为有什么变化?为什么这个变化很重要?