SQL Joins Practice — 87 Challenges (58 Free)

87 hands-on JOIN challenges counted from the live bank — 8 Easy, 49 Medium, 26 Hard — from your first INNER JOIN to self-joins, cross joins and the anti-join pattern. 58 are free to play, including 1 free Hard preview; the rest are Pro. Real datasets, AI tutoring.

Start Practicing Free →

LEFT JOIN and the anti-join: 19 challenges (16 free)

Every challenge below is tagged LEFT JOIN: keep every row from the left table and let the unmatched side come back NULL. That NULL is the anti-join — LEFT JOIN … WHERE right.id IS NULL finds the customers who never ordered, the records with no match. Start with LEFT JOIN: Watch the NULLs Appear, the Easy one written to show the mechanism; the anti-join explained has the walkthrough.

Counted from the challenge bank, September 2026. Easy first, then Medium, then Hard.

Easy Free

LEFT JOIN: Watch the NULLs Appear

Uses: LEFT JOIN NULL Handling

Try it →
Medium Free

LEFT JOIN: Keep Everyone

Uses: LEFT JOIN GROUP BY

Try it →
Medium Free

Customers Who Never Ordered

Uses: LEFT JOIN WHERE LEFT JOIN / NOT IN

Try it →
Medium Free

LEFT JOIN NULL Semantics: Inactive Customers

Uses: LEFT JOIN COALESCE Aggregation GROUP BY

Try it →
Medium Free

Management Hierarchy Overview

Uses: LEFT JOIN EXISTS Subquery COALESCE

Try it →
Medium Free

Membership Tier Revenue Analysis

Uses: LEFT JOIN GROUP BY Aggregation COALESCE

Try it →
Medium Free

Self-Join: Employee and Manager

Uses: Self-Join LEFT JOIN

Try it →
Medium Free

Inactive Customers by Tier

Uses: LEFT JOIN CASE GROUP BY Derived Table

Try it →
Medium Free

Country × Category Coverage Matrix (Cross Join)

Uses: CROSS JOIN LEFT JOIN COUNT

Try it →
Medium Free

Membership × Country Activity (Cross Join)

Uses: CROSS JOIN LEFT JOIN GROUP BY

Try it →
Medium Free

Dormant Cards — No Transactions in the Last 14 Days

Uses: LEFT JOIN IS NULL CTE

Try it →
Medium Free

Chargeback Rate Per Merchant

Uses: LEFT JOIN GROUP BY HAVING

Try it →
Medium Free

Signup Cohort Activation Within 30 Days

Uses: SELECT CTE LEFT JOIN GROUP BY julianday COUNT

Try it →
Medium Free

Users Who Never Sent Money

Uses: SELECT LEFT JOIN NULL Handling WHERE

Try it →
Medium Free

Referred vs Organic: First-Month Spend

Uses: SELECT CASE COALESCE LEFT JOIN CTE julianday

Try it →
Hard Pro

Self-Join: Manager Salary Comparison

Uses: Self-Join LEFT JOIN CASE ROUND

Try it →
Hard Pro

Anti-Join Pipeline: Unmatched Records

Uses: LEFT JOIN IS NULL CTE GROUP BY

Try it →
Hard Pro

Disputed Spend by Risk Tier and Category

Uses: LEFT JOIN CTE CASE Window Functions

Try it →

Self-joins: 15 challenges (7 free)

A table joined to itself — employees to their managers, orders to earlier orders by the same customer, pairs of rows that satisfy a condition. Start with Employee + Manager Pairs (Self Join); the Hard ones add date windows, non-equi conditions and a fraud-detection velocity rule.

Counted from the challenge bank, September 2026. Medium first, then Hard.

Medium Free

Count Direct Reports

Uses: GROUP BY Aggregation Self-Join HAVING

Try it →
Medium Free

Management Hierarchy Overview

Uses: LEFT JOIN EXISTS Subquery COALESCE

Try it →
Medium Free

Self-Join: Employee and Manager

Uses: Self-Join LEFT JOIN

Try it →
Medium Free

Employee + Manager Pairs (Self Join)

Uses: Self Join Aliases

Try it →
Medium Free

Earning More Than the Boss (Self Join)

Uses: Self Join WHERE

Try it →
Medium Free

Same-Year Hires in Same Department (Self Join)

Uses: Self Join Date Functions

Try it →
Medium Free

Cross-Account Collusion — Shared Device Fingerprint

Finance & Banking track · Uses: Self-JOIN WHERE

Try it →
Hard Pro

Employees Earning More Than Manager

Uses: WHERE Self-Join

Try it →
Hard Pro

Employees with Similar Salaries

Uses: Self-Join Non-Equi Join ABS WHERE

Try it →
Hard Pro

Detect Repeat Buyers Within 7 Days

Uses: Self-Join Date Functions DISTINCT BETWEEN

Try it →
Hard Pro

Consecutive IDs

Uses: Self-Join

Try it →
Hard Pro

Self-Join: Manager Salary Comparison

Uses: Self-Join LEFT JOIN CASE ROUND

Try it →
Hard Pro

Self-Join: Repeat Orders Within a Week

Uses: Date Functions Self-Join DISTINCT

Try it →
Hard Pro

Velocity Rule — 5+ Transactions in 5 Minutes

Finance & Banking track · Uses: GROUP BY Date Functions Self-Join

Try it →
Hard Pro

Two Swipes at the Same Merchant Inside a Day

Uses: Self-JOIN JULIANDAY Date Functions

Try it →