Data analysis test for hiring: questions, rubric, and benchmarks
What to screen for in a data analyst hire
Data analyst resumes are a wall of the same keywords: SQL, Excel, Tableau, Python. The gap between candidates isn't the tool list. It's whether they control the grain of a query, notice when a join doubles the row count, and can turn a metric drop into a recommendation you'd act on. None of that is visible until you test it.
This page gives you a complete screen: question bank with expected approaches, a transparent rubric, and hiring bands. For the rest of the process, see the data analyst hiring guide.
Skill domains and weights
- SQL and data retrieval (30%): joins, aggregation, subqueries and CTEs, window functions, date bucketing, NULL handling, deduplication, and the sanity checks that catch join explosions.
- Spreadsheet analysis (15%): cleaning, text and date functions, XLOOKUP or INDEX-MATCH, SUMIFS, PivotTables, chart selection.
- Statistics and experimentation (20%): sampling bias, confidence intervals, p-values vs practical significance, A/B interpretation, guardrail metrics, correlation vs causation.
- Business interpretation and communication (25%): KPI definitions, funnel and cohort reasoning, anomaly investigation, and writing that moves from assumptions to method to insight to recommendation.
- Data quality, governance, and ethics (10%): validation checks, appropriate use, documenting assumptions and limitations.
Calibrate difficulty to the seat. A reporting analyst supporting you part-time needs sections A, B, and D. A solo analyst who will own decisions needs all five, and the statistics section stops being optional.
The test blueprint (60-75 minutes)
- Section A, SQL: 25-30 minutes, 4 questions, 30% of the score.
- Section B, spreadsheets: 10-12 minutes, 2 questions, 15%.
- Section C, stats and experimentation: 15-18 minutes, 2 questions, 20%.
- Section D, written business case: 12-15 minutes, 1 scenario, 25%.
- Section E, data quality and ethics: 5 minutes, 1 scenario, 10%.
Allowed tools: state them up front and keep them identical for everyone. A basic calculator and scratch paper is typical; a SQL sandbox if you have one; no internet lookup.
The question bank
Dataset context (share with candidates)
Assume an e-commerce product with tables:
- users(user_id, created_at, country)
- events(user_id, event_time, event_type) where event_type in ('view','add_to_cart','purchase')
- orders(order_id, user_id, order_time, revenue, coupon_code)
- experiments(user_id, experiment_name, variant, assigned_at)
Timestamps are UTC.
Q1 (SQL: join + aggregation)
Prompt: compute daily revenue and daily purchasing users for the last 14 days.
Expected approach: filter order_time to the last 14 days, group by date bucket, count distinct users, sum revenue. Output columns: order_date, revenue, purchasing_users.
Q2 (SQL: top-N per group)
Prompt: for each country, return the top 3 coupon codes by total revenue in the last 30 days, excluding NULL coupon codes.
What it tests: date filtering, NULL exclusion, window ranking per partition, and not applying LIMIT 3 globally. A candidate who reaches for RANK() OVER (PARTITION BY country ...) is on track.
Q3 (SQL: funnel with grain control)
Prompt: for users created in the last 60 days, compute conversion rates for view to add_to_cart, add_to_cart to purchase, and view to purchase. One row, three rates.
Traps to watch for: counting events instead of users, and joins that duplicate rows. This is the single most diagnostic SQL question in the set. Weight it accordingly.
Q4 (SQL: rolling metric)
Prompt: create a 7-day rolling average of daily revenue for the last 30 days.
Expected approach: build daily revenue in a CTE, then a window frame with ROWS BETWEEN 6 PRECEDING AND CURRENT ROW.
Q5 (spreadsheets: cleaning + formulas)
Prompt: order_id sometimes has leading or trailing spaces, and revenue imported as text with commas ("1,234.50"). 1) Give the formulas to clean both fields. 2) Give a formula for total revenue where coupon_code = "WELCOME" and country = "US".
Expected: TRIM/CLEAN, VALUE with SUBSTITUTE, SUMIFS.
Q6 (spreadsheets: chart critique)
Prompt: a dashboard line chart starts the y-axis at 950,000 (not zero) and claims "Revenue skyrocketed 40%." Explain what's misleading and how you'd redesign it.
What it tests: visualization integrity and whether the candidate will push back on a misleading chart, including yours.
Q7 (stats: confidence interval interpretation)
Prompt: in an A/B test, Variant B shows a +1.2% absolute lift in purchase conversion. The 95% CI for the lift is [-0.3%, +2.7%]. What do you conclude, and what do you recommend next?
Strong answers: the interval includes zero, so the lift isn't statistically distinguishable from no effect; recommend a longer run or bigger sample rather than shipping on hope, and weigh the cost of waiting.
Q8 (stats: guardrails and multiple comparisons)
Prompt: you tested 10 UI variants and picked the one with the lowest p-value (0.04). Revenue rose slightly, but support tickets rose 8%. Name the statistical and product risks, and the controls you'd apply.
Strong answers: multiple-comparison inflation (a 0.04 among 10 tests is weak evidence), and the guardrail breach matters; expect correction methods or a confirmation test, plus explicit guardrail metrics.
Q9 (business case, written)
Scenario: yesterday conversion dropped from 3.1% to 2.4%. Marketing says traffic quality didn't change. Engineering deployed a checkout change.
Prompt: write a short analysis plan and recommendation (8-12 sentences) covering which metrics you'd check first and why, how you'd segment, what data-quality checks you'd run, and what you'd recommend if checkout is the likely root cause.
This is the section a non-technical owner can judge directly: is the reasoning ordered, are the assumptions named, and would you act on the recommendation?
Q10 (governance and ethics)
Prompt: you're asked to join employee performance ratings to badge-swipe data to "predict who's likely to quit" and share results with managers. What questions do you ask before proceeding, and what safeguards would you require?
Strong answers: purpose and appropriate use, consent and transparency, access controls, aggregation and minimization, retention limits, and human oversight. A candidate who just starts writing the query is telling you something.
Scoring rubric
Total: 100 points.
Section A: SQL (30 points: Q1 7, Q2 8, Q3 8, Q4 7)
Per question: correctness 60%, grain control 20% (no duplication, counts the right entity), clarity 10% (readable CTEs and aliases), efficiency 10%. Give partial credit for a correct setup with a wrong final number.
Section B: spreadsheets (15 points: Q5 9, Q6 6)
Section C: stats (20 points: Q7 10, Q8 10)
Interpretation accuracy 50%, decision implications 30%, risks and assumptions 20%.
Section D: business case (25 points, 0-5 per dimension)
- Problem framing and KPI choice
- Hypothesis quality (plausible causes, not one guess)
- Method and segmentation
- Data-quality checks
- Recommendation quality (actionable, proportional, includes next steps)
Section E: governance (10 points)
Identifies the sensitive nature and stakeholders (3), asks for purpose limits, access controls, and oversight (4), proposes safeguards like aggregation, minimization, retention, and audit trails (3).
Hiring bands and red flags
- 85-100: senior-caliber signal. Anticipates pitfalls, stakeholder-ready recommendations. Move quickly and use the interview for working style, not re-testing.
- 70-84: reliable across domains, communicates trade-offs. A strong hire for a first or solo analyst seat. Probe the weakest section in the interview.
- 50-69: solves standard problems but wobbles on windows, ambiguity, or recommendations. Workable for a supported reporting seat, not for owning decisions alone.
- 0-49: follows tutorials but isn't reliable under pressure. Expect join explosions and shaky experiment reads in production.
Critical-weakness rule: a candidate at 75 who failed Q3 (grain control) or Q7 (CI interpretation) needs a follow-up before an offer. Those two failure modes produce confidently wrong numbers, the most expensive kind.
A good screen-in signal for most seats: 70+ with no critical weakness. Calibrate against your own hires over time.
Interview follow-ups by weak section
- SQL: "Here's a query that returns doubled revenue. Find the bug." (Hand them a join-explosion example.)
- Stats: "Define success and guardrails for a test on our pricing page. What would make you stop it early?"
- Communication: "Explain Q9's recommendation to me like I'm the owner. Two minutes."
Compliance and fairness notes
- Use standardized prompts, time limits, and allowed tools for every candidate.
- Score with the rubric, not gut feel, and give partial credit consistently.
- Keep the test to a work-sample style that mirrors real tasks. That's both better signal and easier to defend as job-related.
- Provide reasonable accommodations, like extra time or an accessible format, when requested.
- Treat the result as one input alongside a structured interview. Never decide from a single score.
Run this screen automatically with Truffle
The rubric above is the easy half. The hard half is getting 60 applicants to take the same test under the same conditions and grading it all before the good ones accept other offers.
Truffle is a candidate screening platform that combines talent assessments with resume screening and one-way video interviews. Administer the test from one link, let Truffle score responses against your criteria and rank the pile, then add a one-way interview for the business-case explanation so you hear how each finalist communicates an analysis before you book a call. AI surfaces the evidence behind every ranking. You make the call.
The 7-day free trial includes 30 credits, no card required. Start free trial