Data analyst interview prep, built for Southeast Asia
The SQL round is where most data analyst applications in Malaysia stop.
Learn it. Prove it. Rehearse it.
Practise original SQL and Excel interview scenarios inspired by the work at Grab, Shopee and Maybank — graded instantly, in your browser, free to start.
101 SQL questions · 29 SQL chapters · free, no signup to start
What solving one actually looks like
Get stuck, and this is what happens next.
Shopee's finance team wants a cumulative view of sales during a campaign.
From the daily_sales table, return each sale_date, its amount, and the running total of amount ordered by date as running_total. Order the output by sale_date.
Every question on this site is scaffolded like this one. Across the bank, that's roughly 81,000 words of written explanation — not just an answer key.
Start smaller than the question. Before worrying about "running", just get the campaign's grand total:
SELECT SUM(amount) AS grand_total FROM daily_sales;Run it. You get one row — 925.00 — and the four daily rows are gone. That is the thing to fix: you need the total and the rows.
Where to start
Four workplace milestones from an entry screening to owning a decision-ready analysis, with a diagnostic route for skills you already have.
- 01
Pass the screen
Build the smallest useful SQL and spreadsheet toolkit, then prove you can turn a plain request into a correct result.
- 02
Deliver trustworthy numbers
Handle the dirty-data traps behind first-month analyst work: NULLs, duplicates, joins, dates, lookups, and mismatched labels.
- 03
Own the analysis
Move from answering a query to framing, checking, and communicating an analysis that another person can act on.
- 04
Influence the decision
Develop senior signals: reason about schemas and performance, challenge experiment readouts, and communicate what the evidence cannot prove.
How it works
One path, from your first query to the interview.
Learn
The free curricula — SQL, Excel, and the fundamentals behind both — plus the paid data-science tracks, ordered start to finish, every example runnable.
Practise
Graded instantly against the full result set — a real Postgres compiled to WebAssembly, running in your browser.
Rehearse
The formats a real interview loop actually uses — not just more questions.
AI coach
It reads your query, not a script.
Get something wrong and the coach looks at the exact query you wrote — your table names, your logic, your specific mistake — and tells you what's off without handing you the answer. Free, 3 sessions a day.
Try it on a questionGrab · Completed rides by city
SELECT city, COUNT(*) AS completed_rides FROM rides GROUP BY city;
AI coach
You're grouping by city and counting all rides regardless of status, which is why Ipoh (with no completed rides) is included incorrectly. Try filtering the rides first to include only those with status = 'completed' before grouping—that will fix the count and exclude cities without completed rides. This approach is both clearer and more efficient for your goal. Keep going, you're very close!
Beyond SQL
Two more disciplines, graded the same way.
Excel
Setel · Classify a member's loyalty tier by monthly spend
Graded result: A1 is 180: not under 100, so the first branch fails, but under 300, so it lands on Silver.
Take-home
Every lab ends with the write-up a real take-home is actually judged on — a model answer excerpt, not just the query.
### Question What's total revenue from this CSV export, and is the export itself trustworthy enough to report a number from? ### Data One `txns` table, 24 rows, dates 2026-07-01 to 2026-07-20 — a single export, no joins. ### Method - Counted rows and pulled …
Database
Some questions aren't graded by output rows at all — this one is graded by checking Postgres's own catalogs for a real primary key constraint.
ALTER TABLE orders ADD CONSTRAINT orders_pkey PRIMARY KEY (id);
The curriculum
29 chapters, in order
Single-table fundamentals: read, filter, sort, and reshape data.
- 01Start here: SQL & this tutorial
- 02SELECT: reading data
- 03WHERE: filtering rows
+ 10 more
Summarize data and combine it across tables.
- 14Aggregate functions: SUM, AVG, COUNT, MIN, MAX
- 15GROUP BY: one row per group
- 16HAVING: filtering groups, not rows
+ 4 more
Multi-step reasoning: the questions that separate candidates.
- 21Query execution order
- 22Subqueries & CTEs
- 23Window functions
+ 6 more
Basic — RM 25/mo
Free gives you the answer. Basic teaches you why.
Every question ships with a stepwise walkthrough and the interviewer's next question — gated even on free questions, because that's the moment a real interview keeps going. Basic also unlocks the full bank, the take-home round, Data Lab (beta), a higher daily AI coach limit, and a dashboard with a review queue that gets more useful the longer you use it.
See pricingShopee
Running total of daily sales
Free
A 4-hint scaffold walks you from a blank query to the answer, one nudge at a time — never just the solution.
Basic — the interviewer's next question
Nice — the running total works. Now add a column showing each day's amount as a percentage of the whole campaign's total (pct_of_total), rounded to one decimal place.
The question bank
A taste of what you'll solve
Add a primary key to an unkeyed orders table
schema-designAbsolute difference and relative lift
experimentationBusiest data center in each region
windowApplicants with no referral code on file
basicsAccounts above their own branch's average
subqueryCharge each payout its tier's fee
mathYour next data interview starts here.
Start the Data Analyst path, or jump straight into the question bank. Both are free, and neither asks you to sign up first.