Sign in to continue
All 22 modules are open from the start — nothing here is locked, and nothing costs anything. Sign in so your progress, titles and credentials stay with you, on every device you use.
Free forever, with your Google account. No password, no payment.
Checking your account…
Course contents
Four parts. 22 modules. Complete them all to earn the certificate.
Every module is a lesson you read, a lab you type real queries into, and one graded assignment that decides whether the module completes. Nothing to install, and the database is rebuilt before every run, so nothing you write can break it. Every module is open from the start — the order below is the recommended path, not a queue you have to unlock.
Reading Data
6 ModulesEverything you need to pull exactly the rows and columns you want out of a table: selecting, filtering, sorting, de-duplicating, the NULLs that break a naive filter, and the CASE expression that buckets rows into categories. No prior database experience assumed.
SELECT & FROM
Read a table, choose the columns you want, and meet the practice database you will be querying for the rest of the dojo.
2Filtering with WHERE
Cut a table down to the rows that matter, combine conditions without getting the logic wrong, and use IN, BETWEEN and LIKE.
3Sorting & Limiting
Control the order rows come back in, break ties on purpose, and take the top of a list — or a window out of the middle of it.
4DISTINCT, Aliases & Expressions
De-duplicate a column, compute new columns from existing ones, and name every output so the result reads for itself.
5NULL and Three-Valued Logic
The value that is not a value: why = NULL never matches,
how NULL spreads through a calculation, and how to substitute it.
CASE Expressions
SQL's if-statement. Bucket rows into named categories, get the branch order right, and never forget the ELSE.
Summarising
5 ModulesTurning rows into numbers: counting, totalling and averaging, one number per category, one row per month, and the handful of functions that reshape a value on its way out — including the division that quietly returns zero.
COUNT, SUM & AVG
The five functions that collapse many rows into one value, the two COUNTs that disagree about what counting means, and the empty result that hands back NULL rather than zero.
2GROUP BY
One number per category instead of one for the table — plus the bare column in a SELECT list that Postgres refuses by name and the lenient databases answer from a row nobody chose.
3HAVING & Filter Order
Filtering groups rather than rows, the order a query really runs in, and the one condition that is legal in either clause and gives a different answer in each.
4Working with Dates
Filtering and grouping by day, month and year on real
DATE columns, measuring a gap in days, and the range
filter that loses the afternoon of the last day.
Text & Number Functions
Cutting and gluing text, what a single NULL does to a concatenation, and the percentage that comes back as 0 for every dataset ever written.
Combining
6 ModulesBringing several tables together without losing or duplicating rows. The join that multiplies, the join that deletes, and the two mistakes that turn an outer join back into an inner one without saying so.
INNER JOIN
Lining two tables up on the value they share, why a missing condition returns 288 rows instead of an error, and the unmatched rows a join removes without mentioning it.
2LEFT JOIN & Missing Rows
Keeping the rows an inner join throws away, the two-line pattern for finding what is missing, and the WHERE clause that silently undoes the whole thing.
3Joining Three Tables
Chaining joins to reach a column two tables away, grouping by two dimensions at once, and the inner join downstream that silently cancels the outer join above it.
4Self Joins & UNION
Joining a table to itself to follow a key that points back into it, the comparison that stops every pair appearing twice, and the UNION that quietly deletes rows you needed.
5Subqueries
The four places a SELECT can sit inside another statement, the subquery that sees the row around it, and the NOT IN that returns nothing at all once a single NULL appears.
6Common Table Expressions
Naming each step instead of nesting it, the step reused twice that a derived table would make you repeat, and the recursive form that walks a hierarchy of unknown depth.
Analyst SQL
5 ModulesRanking a row within its group, comparing it to its neighbours, running totals, funnels and retention cohorts — and, at the end, changing data rather than only reading it.
Window Functions
The aggregate that summarises without collapsing the rows it summarises, ranking inside a group, and the three ranking functions that only disagree once there is a tie.
2Running Totals, LAG & LEAD
Totals that accumulate down the rows, reaching back to the previous month and forward to the next, and the default frame that quietly adds every tied row at once.
3Funnels & Cohorts
Conversion funnels and the segment that changes the answer, retention grids, and the judgement about how wide a cohort has to be before its percentages mean anything.
4INSERT, UPDATE & DELETE
The statements that change data, the missing WHERE clause that changes every row in the table, the keys that refuse to orphan anything, and the transaction that lets you take it back.
5Capstone: Your First Week
No lesson and no new syntax — a mock analytics job instead. An undocumented database, five stakeholders asking for numbers in their own words, and fifteen queries between Monday and the board pack on Friday.