mahir_data
Menu▾
Today's questionShow each transaction with its merchant nameBigPayeasy

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

Editable — this really runsTouch 'n Go · Wallets with a healthy balanceeasy

What solving one actually looks like

Get stuck, and this is what happens next.

Shopeehard

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.

  1. 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.

Southeast AsiaLazada/GXBank/AirAsia/Boost/AIA/99 Speedmart/Padini/Grab/Shopee/Telekom Malaysia/Carsome/Traveloka/Foodpanda/Zalora/GCash/CIMB/RHB Bank/Lotus's/BigPay/Touch 'n Go/Ninja Van/Maybank/Bank Negara Malaysia/Carousell/Public Bank/DBS Bank/PayNet/Hong Leong Bank/CelcomDigi/Tenaga Nasional/Petronas/U Mobile/GoTo/Mr DIY/Bank Islam/Setel/GrabFood/AmBank/Sime Darby/Tokopedia/Maxis41 companies
Global, hiring in AsiaTikTok/Panasonic/AEON/HSBC/Standard Chartered/EY/Intel/Toyota/DHL/Huawei/PwC/Tencent/Deloitte/Alibaba/KPMG/Sony/Accenture/Western Digital

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.

  1. 01

    Pass the screen

    Build the smallest useful SQL and spreadsheet toolkit, then prove you can turn a plain request into a correct result.

  2. 02

    Deliver trustworthy numbers

    Handle the dirty-data traps behind first-month analyst work: NULLs, duplicates, joins, dates, lookups, and mismatched labels.

  3. 03

    Own the analysis

    Move from answering a query to framing, checking, and communicating an analysis that another person can act on.

  4. 04

    Influence the decision

    Develop senior signals: reason about schemas and performance, challenge experiment readouts, and communicate what the evidence cannot prove.

See the full path →

How it works

One path, from your first query to the interview.

01

Learn

The free curricula — SQL, Excel, and the fundamentals behind both — plus the paid data-science tracks, ordered start to finish, every example runnable.

02

Practise

Graded instantly against the full result set — a real Postgres compiled to WebAssembly, running in your browser.

03

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 question

Grab · 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.

The curriculum

29 chapters, in order

Full syllabus →

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 pricing

Shopee

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

All 101 questions →

Your 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.