Courses
Practical courses for the work we actually do. Pick one, finish it, and apply it.
Read, change and combine data in PostgreSQL without guessing what a query does. This is for people who have never written SQL, or who copy queries without knowing why they work. You will set up PostgreSQL 18, ask a small shop database for rows, change data safely, summarise it, and join tables without losing or doubling rows. If you skip the NULL and join checks, your queries will return answers that look right and are not.
Window functions, CTEs and schema design for tables other people also write to. You will join three tables without double counting, rank and total rows with window functions, design tables that protect themselves, and read a query plan to see why a query is slow. If you skip the checks on duplicates, time zones and concurrent changes, your queries will pass on test data and give wrong answers on real data.
Read query plans, choose the right index and change live tables safely. You will read an EXPLAIN ANALYZE plan line by line, pick between B-tree, GIN, GiST and BRIN indexes, understand MVCC, locks and deadlocks, and run migrations and backups that you have proved on a copy. If you skip the plans, the locks and the restore test, your queries will pass on a small table and fail when the table is large and busy.