From schema design to production-grade data pipelines
Build your SQL foundations
Filter, sort, and limit rows from a single table using WHERE, IN, BETWEEN, LIKE, ORDER BY, and LIMIT.
Summarize data with aggregate functions and group results using GROUP BY and HAVING.
Combine rows from two tables with INNER JOIN and LEFT JOIN, and apply WHERE and GROUP BY on joined data.
Handle missing data with IS NULL and COALESCE, and add conditional logic with CASE WHEN expressions.
Compose complex queries
Join three or more tables, use self-joins, and apply CROSS JOIN for combinations.
Break complex queries into named steps with CTEs and use scalar, row, and correlated subqueries.
Create tables with constraints, define primary/foreign keys, and design normalized schemas.
Insert, update, and delete data with INSERT INTO, UPDATE, DELETE, and COPY/bulk loading patterns.
Choose appropriate data types, apply CHECK constraints, and handle type casting with CAST.
Master analytical patterns
Design and query star schemas with fact tables (measures + FKs) joined to dimension tables (attributes).
Implement slowly changing dimensions with valid_from, valid_to, and is_current for historical tracking.
Perform atomic insert-or-update operations for idempotent pipeline loading using MERGE and ON CONFLICT.
Implement watermark patterns (max updated_at) and partition overwrite (DELETE+INSERT) for incremental data loading.
Traverse hierarchies, generate series, and solve graph problems using recursive common table expressions.
Write SQL-based data quality checks: NULL completeness, uniqueness, referential integrity, and freshness.
Analyze execution plans, optimize joins, and apply indexing strategies for large datasets.
Query nested data structures using DuckDB's STRUCT, LIST, and JSON functions for semi-structured data.