I’ve been frustrated with SQL learning resources for a while. Most are either:
- Dry reference docs
- Toy exercises with no context (“SELECT * FROM employees”)
- Paid platforms with paywalls after level 3
So I built SQLwak — a free, browser-based SQL game where you’re hired as a Graduate Analyst at Lion City Bank, a fictional Singapore bank.
How it works
Instead of abstract exercises, every challenge is a real business request from a colleague:
“The Operations team needs all Central region branches for an upcoming audit.”
“Risk wants customers with credit scores below 600 who have active loans.”
“Finance needs vessels ranked by cargo revenue — use window functions.”
You write actual SQL against a realistic 9-table banking database and get immediate feedback.
57 levels across 4 tiers
| Tier | Skills |
|---|---|
| 🟢 Foundational | SELECT, WHERE, ORDER BY, LIMIT |
| 🟡 Intermediate | JOINs, GROUP BY, HAVING, subqueries |
| 🔴 Advanced | CTEs, multi-table aggregations |
| ⚫ Expert | Window functions (RANK/DENSE_RANK OVER PARTITION BY), UNION ALL, compound CTEs |
The database schema
Lion City Bank has two divisions:
Retail Banking: customers, accounts, transactions, loans, branches, products
Maritime Trade Finance (Advanced/Expert levels): vessels, cargo_shipments, trade_finance_facilities — covering voyages between Singapore, Port Klang, Bangkok, Jakarta, and Ho Chi Minh City.
The maritime division exists because Singapore is a major trade hub. It makes the Expert levels genuinely interesting — you’re ranking vessels by cargo revenue and analyzing trade finance utilisation rates, not just counting rows.
Technical details
- Next.js 15 + TypeScript + Tailwind CSS
- SQLite via WebAssembly — all query execution is client-side, no backend needed
- Deployed on Vercel
- Fully open source: github.com/martinl5/sqlwak
No signup. No download. Just SQL.
Open the link and start writing queries: sqlwak.vercel.app
Would love feedback on difficulty progression, new level ideas, or schema additions. What SQL concepts do you wish you’d practiced more before your first data job?