Advanced query patterns

Subquery vs CTE vs LATERAL, recursive CTE, window functions nâng cao (frame clause, gap-and-island), set operations, UPSERT, MERGE (PG 15+).

7 bài · ~148 phútMiễn phí

Nội dung

Danh sách bài học

  1. 01

    Subquery, CTE, LATERAL — 3 cách viết cùng một logic

    Subquery (scalar/correlated/IN/EXISTS), CTE (WITH), và LATERAL — mỗi pattern hợp một ngữ cảnh. Biết khi nào dùng cái nào là bước nhảy sang viết SQL có chủ đích.

    ~22 phút
  2. 02

    Recursive CTE — duyệt cây comment, breadcrumb, và hierarchy trong SQL

    WITH RECURSIVE chuẩn SQL: anchor, recursive part, termination, chống cycle bằng path array và CYCLE clause, pitfall infinite loop, khi nào dùng closure table.

    ~22 phút
  3. 03

    Window functions nâng cao — Frame, NTILE, Gap-and-island

    Frame clause ROWS/RANGE/GROUPS, NTILE, PERCENT_RANK/CUME_DIST, và gap-and-island cho streak analysis — viết analytics query phức tạp mà không chồng nhiều CTE.

    ~22 phút
  4. 04

    Set Operations — UNION, INTERSECT, EXCEPT

    UNION ALL vs JOIN phức tạp, INTERSECT và EXCEPT cho 'giao/hiệu' hai tập trong một câu, cùng NULL semantics và ORDER BY scope để tránh pitfall ẩn.

    ~16 phút
  5. 05

    UPSERT — INSERT hoặc UPDATE khi key trùng

    INSERT nếu chưa có, UPDATE nếu key trùng — idempotent write trong một câu atomic. Race insert-or-update và landscape dialect: ON CONFLICT, ON DUPLICATE KEY, MERGE.

    ~18 phút
  6. 06

    MERGE Statement — ETL multi-rule sync trong một câu lệnh

    MERGE (chuẩn SQL:2003) gộp INSERT/UPDATE/DELETE một lần quét source. Khi nào thắng UPSERT, cú pháp WHEN clause, demo bulk sync, pitfall duplicate source.

    ~18 phút
  7. 07

    Mini-challenge — Sprint burndown chart: snapshot hằng ngày

    Burndown chart cho sprint: precompute snapshot table refresh incremental thay vì compute on-the-fly. Kết hợp recursive CTE, window cumulative, và UPSERT idempotent.

    ~30 phút