Interview Insights · Data Analyst
The Data Analyst Answer That Instantly Builds My Confidence
Quick summary — Data validation answer
The answer that builds my confidence is any answer that shows you verify before you report. Most wrong numbers in analytics do not come from bad formulas. They come from joining tables at the wrong level, counting duplicates, or quietly dropping NULLs. When a candidate asks about the grain of a table and explains how they would reconcile their result with a trusted figure, I stop worrying about whether their dashboards will embarrass the team. This page shows what that answer sounds like and how to make it a habit.
In this guide you will learn:
- What 'grain' means and why asking about it impresses interviewers
- Five quick checks to run on any dataset in pandas or SQL
- How to reconcile your result with a trusted total
- How to phrase the answer in technical and case rounds
- A validation checklist you can paste into every project
SECTION 01Why asking about the grain sounds senior
The grain of a table is what one row represents. One row per order, per order item, per customer per day, per page view. It sounds basic, yet it is the root of many wrong reports. If an orders table has one row per item and you sum the order-level delivery fee, you overcount it once for every extra item.
When I give a candidate a schema and they ask, 'Is this one row per order or per item?', I know they have been burned by this before, or have learned from someone who was. That single question tells me more about their real experience than a perfectly memorised definition of a LEFT JOIN.
| Table | Possible grain | Trap if you assume wrong | Question to ask |
|---|---|---|---|
| order_items | One row per product in an order | Order-level fees summed many times | Are fees stored per order or per item? |
| customer_history | One row per customer per change | Customers counted once per address change | Is there a current-flag or valid_to column? |
| inventory_daily | One row per SKU per day | Stock summed across days | Should I take the last day of the period? |
| web_events | One row per event | Sessions overcounted from repeated clicks | How is a session defined here? |
Interviewer: Total delivery fee collected last month?
Candidate:
SELECT SUM(delivery_fee)
FROM order_items
WHERE order_date >= '2026-10-01'
AND order_date < '2026-11-01';
-- Looks fine, but if delivery_fee repeats on every
-- item row of an order, this total is inflated.Candidate: Quick check first: is order_items one row per
item? If yes, delivery_fee probably repeats per item.
SELECT SUM(delivery_fee) AS total_fee
FROM (
SELECT order_id, MAX(delivery_fee) AS delivery_fee
FROM order_items
WHERE order_date >= '2026-10-01'
AND order_date < '2026-11-01'
GROUP BY order_id
) per_order;
-- Collapse to one row per order, then sum.
-- Better still: use the orders table if it has the fee.
Notice the date filter uses 'greater than or equal to the first day' and 'less than the first day of the next month'. That avoids missing rows with a time part on the last day, another detail that quietly signals care.
SECTION 02Five quick checks I want to hear before any result
The second half of the confidence-building answer is validation. You do not need a long data quality framework. Five fast checks catch most problems: row counts, duplicates on the key, NULLs in important columns, value ranges, and a reconciliation with a known total.
In an interview, you do not have to run them all. Naming them, and showing you know what each one protects against, is enough. In a take-home assignment, include them in your notebook so the reviewer can see them.
| Check | What it catches | Pandas idea | SQL idea |
|---|---|---|---|
| Row count | Rows lost or multiplied in joins | len(df) before and after merge | COUNT(*) before and after JOIN |
| Key duplicates | Repeated orders or customers | df.duplicated('order_id').sum() | GROUP BY key HAVING COUNT(*) > 1 |
| NULLs | Silent drops in filters and averages | df.isna().sum() | SUM(CASE WHEN col IS NULL THEN 1 ELSE 0 END) |
| Ranges | Negative prices, future dates | df.describe() and min/max | MIN and MAX per column |
import pandas as pd
orders = pd.read_csv('orders.csv', parse_dates=['order_date'])
customers = pd.read_csv('customers.csv')
print('rows:', len(orders))
print('duplicate order_id:', orders.duplicated('order_id').sum())
print(orders[['amount', 'customer_id']].isna().sum())
print(orders['amount'].describe())
print('date range:', orders['order_date'].min(), orders['order_date'].max())
merged = orders.merge(customers, on='customer_id', how='left',
validate='many_to_one')
assert len(merged) == len(orders), 'join changed row count'
print('total amount:', round(merged['amount'].sum(), 2))-- Compare my report total with the finance ledger
SELECT 'report' AS source, SUM(amount) AS total
FROM orders
WHERE status = 'delivered'
AND order_date >= '2026-10-01' AND order_date < '2026-11-01'
UNION ALL
SELECT 'ledger', SUM(credit_amount)
FROM finance_ledger
WHERE entry_type = 'sale'
AND entry_date >= '2026-10-01' AND entry_date < '2026-11-01';
-- If they differ, list the gap by day to find
-- where the definitions or timings disagree.
The validate='many_to_one' argument in pandas is a small feature that few freshers know. It raises an error if the customers table has duplicate customer IDs, which would otherwise silently multiply your order rows. Mentioning it in an interview is a strong signal.
SECTION 03How to phrase the answer in different rounds
The same habit sounds different depending on the round. In a SQL round it is a clarifying question. In a case round it is a statement about data reliability. In a project discussion it is a story about a check that saved you.
The mistake is to wait until the end and say 'and then I would validate it'. That sounds like an afterthought. The confident version weaves validation into the beginning and the end of the answer, so the interviewer hears it as part of how you work.
| Round | Where validation fits | Sample line | What it signals |
|---|---|---|---|
| SQL live round | Before the query | Can I confirm the table has one row per order? | You think about structure first |
| Excel task | Before the pivot | Let me remove duplicate rows and blank IDs first | You trust nothing blindly |
| Case study | When stating findings | This assumes the tracking was stable in both months | You know data can lie |
| Project deep dive | As a story | My total did not match the source, so I traced the join | Real hands-on experience |
Interviewer: Signups jumped last week. What happened?
Candidate: Before I look for a business reason, I would
rule out a data reason. Three quick checks:
1. Did tracking change? A new form or a duplicate event
firing would inflate signups.
2. Are the new signups real? Check for many accounts from
the same email domain or device.
3. Do signups in the product database match the analytics
tool for that week?
If all three are clean, I would then split the jump by
channel and campaign to find the business cause."In my sales dashboard project, my monthly revenue was
higher than the total in the raw file. I found that the
product lookup table had the same product ID twice after
a category rename, so the merge doubled some rows.
I fixed the lookup, added an assert that row counts stay
the same after every merge, and now I check one total
against the source before I build any chart."
SECTION 04A validation checklist for every analyst project
Paste this checklist into the first cell of every notebook or the first page of every project document. Over time it becomes automatic, and you will naturally talk about it in interviews.
BEFORE I ANALYSE
[ ] I can say what one row means in each table
[ ] I know the primary key of each table
[ ] I checked duplicates on that key
[ ] I listed NULL counts for important columns
[ ] I checked min and max for amounts and dates
[ ] I know the time zone of the date columnsAFTER EVERY JOIN OR MERGE
[ ] Row count before: ______ after: ______
[ ] If it changed, I can explain why
[ ] I used the join type I meant (inner vs left)
[ ] Unmatched keys counted and reviewed
[ ] pandas: validate= argument used where possibleBEFORE I SHARE ANY NUMBER
[ ] One headline total matches a trusted source
[ ] Differences are listed with a reason
[ ] Metric definition written in one sentence
[ ] Filters stated (dates, status, region)
[ ] One limitation written down honestly
If any box is empty, the number is a draft.
SECTION 05Small habits that make interviewers trust your numbers
Confidence is built from small, repeated signals. These habits create them without making your answers longer.
- Say the grain out loud — Start technical answers with one sentence about what each row represents. It takes five seconds and prevents most errors.
- Name one check, not ten — Pick the single most relevant validation for the question. A focused check sounds experienced; a long list sounds memorised.
- Use real numbers in stories — When you describe a project bug, mention the actual row counts you saw in your own work, so the story sounds lived rather than rehearsed.
- Separate data and business causes — When a metric moves, first rule out tracking or pipeline changes, then look for business reasons.
- Write definitions down — Keep a one-line definition for every metric in your project README. Interviewers often ask how you defined it.
SECTION 06Interview Q&A — Data validation answer
Q1What does 'grain of a table' mean in a data analyst interview?
It means what one row represents, such as one order, one item in an order, or one customer per day. Knowing the grain tells you how to aggregate safely. If you sum a value stored at order level on an item-level table, you overcount. Asking about grain early shows practical experience.
Q2How do you check that your analysis is correct?
I check row counts before and after joins, look for duplicates on the key, count NULLs in important columns, review min and max values, and reconcile one headline total with a trusted source such as finance data. If something does not match, I explain the difference before sharing.
Q3What would you do if your dashboard total does not match the source system?
I would compare definitions first: date range, time zone, status filters and whether refunds are included. Then I would break the gap down by day or category to locate it, and trace a few rows end to end. I would not publish until the difference is explained.
Q4How do you handle duplicates in a dataset?
First I decide what a duplicate means for that table, because the same customer can appear twice legitimately in a history table. Then I count them with a GROUP BY on the key or pandas duplicated, inspect a few examples, and remove or collapse them with a clear rule that I write down.
Q5Why do NULLs matter for averages and filters?
AVG in SQL ignores NULLs, so the average is computed only on rows with values, which can mislead if many are missing. A filter like column = value also drops NULL rows silently. I count NULLs first and decide whether to exclude, fill or report them separately.
SECTION 07Test yourself — Data validation answer quiz
Five questions. No sign-up.
0 / 5Pick an answer to see why it is right or wrong.
SECTION 08Frequently asked questions
How do data analysts validate data?
Common steps are checking row counts, duplicates on keys, NULL counts, value ranges and date ranges, then reconciling headline totals with a trusted source. Analysts also confirm metric definitions with stakeholders before reporting.
What are data quality checks in SQL?
Typical checks include COUNT(*) before and after joins, GROUP BY key HAVING COUNT(*) > 1 for duplicates, SUM of CASE WHEN column IS NULL for missing values, and MIN or MAX for unrealistic values such as negative amounts or future dates.
What is a reconciliation in data analysis?
It is comparing a total from your analysis with the same total from another trusted system, such as finance or the source database, and explaining any difference. It is one of the strongest ways to show your numbers can be trusted.
What questions should I ask before starting a SQL interview problem?
Ask what one row represents, what the primary key is, whether there can be duplicates or NULLs, what time zone dates are in, and how edge cases such as cancelled orders should be treated.
How do I show attention to detail in a data analyst interview?
Ask about the grain of the data, mention one relevant validation check, state your assumptions, and explain how you would reconcile your result. A short story about a bug you caught in your own project works very well.
Does Uncodemy help with Data Analyst interview answers?
Yes. Uncodemy's Data Analytics Training Course in Noida (classroom and online) includes live projects, one-to-one mock interviews and resume reviews, so you practise Data Analyst interview answers with trainer feedback before the real interview. You can book a free demo class from this page to see how the sessions work.
SECTION 09Related reads
Classroom & online · Noida
Build numbers people can trust
Our Data Analytics Training Course teaches SQL, Excel, Python and Power BI with real datasets, including the validation habits that make interviewers confident in your answers.
₹15,500 · full programme- Hands-on SQL and pandas
- Messy real-world datasets
- Mock technical rounds
- Weekday & weekend batches