Nội dung
Danh sách bài học
- 01~22 phút
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.
- 02~22 phút
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.
- 03~22 phút
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.
- 04~16 phút
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.
- 05~18 phút
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.
- 06~18 phút
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.
- 07~30 phút
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.