📘 DATA ANALYTICS SERIES · CHAPTER 46
Data Analyst Interview Preparation India 2026
SQL, Python, case studies, HR rounds, take-home assignments, and salary negotiation — a complete, practical guide for cracking data analyst interviews in India.
The Typical Interview Structure in India
Most Indian companies run a 3–4 round process for data analyst roles. Understanding the structure lets you prepare each round differently rather than doing one giant generic prep.
| Round | Format | What is tested | Duration |
|---|---|---|---|
| Round 1 | HR screening call | Motivation, CTC, notice period, role fit | 20-30 min |
| Round 2 | Technical — SQL + Excel/Python | Live coding or shared file | 45-60 min |
| Round 3 | Case study / take-home | Business thinking + analysis | 2-4 hrs or 24-48 hrs take-home |
| Round 4 | Final — manager or stakeholder | Communication, past work, fit | 30-45 min |
Startups often compress to 2-3 rounds. Large IT services companies (TCS, Infosys) sometimes add an online aptitude test before Round 1.
SQL Interview Questions — What Actually Gets Asked
SQL is tested in almost every data analyst interview in India. The questions fall into predictable categories — knowing them in advance turns the technical round from a surprise into a pattern-matching exercise.
Category 1 — JOINs and Aggregation
-- Classic question: "Find customers who placed an order in Jan 2026 but NOT in Feb 2026"
SELECT DISTINCT o1.customer_id
FROM orders o1
WHERE o1.order_month = '2026-01'
AND o1.customer_id NOT IN (
SELECT customer_id
FROM orders
WHERE order_month = '2026-02'
);
-- Interviewer follow-up: rewrite using LEFT JOIN (faster on large tables)
SELECT DISTINCT o1.customer_id
FROM orders o1
LEFT JOIN orders o2
ON o1.customer_id = o2.customer_id
AND o2.order_month = '2026-02'
WHERE o1.order_month = '2026-01'
AND o2.customer_id IS NULL;Category 2 — Window Functions (Most Commonly Tested)
-- "Get the second highest salary per department"
SELECT department, employee_name, salary
FROM (
SELECT department,
employee_name,
salary,
DENSE_RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS rnk
FROM employees
) t
WHERE rnk = 2;
-- "Running total of revenue by month"
SELECT order_month,
monthly_revenue,
SUM(monthly_revenue) OVER (ORDER BY order_month) AS cumulative_revenue
FROM monthly_sales;
-- "Month-over-month revenue growth %"
SELECT order_month,
monthly_revenue,
LAG(monthly_revenue) OVER (ORDER BY order_month) AS prev_month,
ROUND(
(monthly_revenue - LAG(monthly_revenue) OVER (ORDER BY order_month))
/ LAG(monthly_revenue) OVER (ORDER BY order_month) * 100, 2
) AS growth_pct
FROM monthly_sales;Category 3 — Self JOIN and CASE WHEN
-- "Find employees who earn more than their manager"
SELECT e.employee_name, e.salary, m.salary AS manager_salary
FROM employees e
JOIN employees m ON e.manager_id = m.employee_id
WHERE e.salary > m.salary;
-- "Classify orders by value bucket"
SELECT order_id,
order_value,
CASE
WHEN order_value < 500 THEN 'Low'
WHEN order_value < 2000 THEN 'Medium'
WHEN order_value < 10000 THEN 'High'
ELSE 'Premium'
END AS value_segment
FROM orders;Category 4 — NULL Handling and Date Functions
-- COALESCE replaces NULL with a default
SELECT customer_id,
COALESCE(email, phone, 'No contact info') AS contact
FROM customers;
-- Orders placed in the last 30 days
SELECT * FROM orders
WHERE order_date >= DATE_SUB(CURDATE(), INTERVAL 30 DAY);
-- Extract month and year
SELECT YEAR(order_date) AS yr, MONTH(order_date) AS mo, COUNT(*) AS orders
FROM orders
GROUP BY 1, 2
ORDER BY 1, 2;- Always write column aliases for computed fields — makes output readable
- Use CTEs for multi-step logic instead of deeply nested subqueries
- State your assumption out loud ("I'm assuming order_date is stored as a DATE type")
- Check for duplicates before joining — mention it even if you don't write the de-dup query
- When you finish, explain the result in one business sentence
Python Interview Tasks — Pandas is the Whole Bar
For data analyst roles (not data scientist), Python interviews focus entirely on pandas. You will not be asked to implement algorithms from scratch. The test is: given a messy DataFrame, can you clean, transform, and summarise it correctly?
Task 1 — Clean and Summarise a Sales Dataset
import pandas as pd
df = pd.read_csv('sales.csv')
# Step 1 — inspect
print(df.shape, df.dtypes, df.isnull().sum())
# Step 2 — fix types
df['order_date'] = pd.to_datetime(df['order_date'])
df['revenue'] = pd.to_numeric(df['revenue'], errors='coerce')
# Step 3 — clean strings
df['city'] = df['city'].str.strip().str.title()
df['category'] = df['category'].str.lower()
# Step 4 — remove duplicates
df = df.drop_duplicates(subset='order_id', keep='first')
# Step 5 — monthly revenue summary
df['month'] = df['order_date'].dt.to_period('M')
summary = (df.groupby(['month', 'category'])['revenue']
.agg(['sum', 'count', 'mean'])
.rename(columns={'sum': 'total_rev', 'count': 'orders', 'mean': 'avg_order'})
.reset_index())
print(summary.head(10))Task 2 — Merge Two DataFrames and Find Gaps
# Customers who have NOT made a purchase (left join + IS NULL equivalent)
customers = pd.read_csv('customers.csv') # customer_id, name, city
orders = pd.read_csv('orders.csv') # order_id, customer_id, amount
merged = customers.merge(orders[['customer_id']].drop_duplicates(),
on='customer_id', how='left', indicator=True)
no_orders = merged[merged['_merge'] == 'left_only'][['customer_id', 'name', 'city']]
print(f"Customers with no orders: {len(no_orders)}")Task 3 — Pivot Table for a Dashboard View
pivot = df.pivot_table(
index='category',
columns='month',
values='revenue',
aggfunc='sum',
fill_value=0
)
# Add a total column
pivot['Total'] = pivot.sum(axis=1)
pivot = pivot.sort_values('Total', ascending=False)
print(pivot)read_csv · info() · describe() · isnull().sum() · fillna · dropna · astype · to_datetime · str.strip · str.title · str.lower · drop_duplicates · merge · groupby · agg · pivot_table · apply · lambda · value_counts · sort_values · reset_index · rename · loc/iloc
Case Study Interviews — The SCOPE Framework
Case study rounds feel open-ended but interviewers are evaluating a specific set of behaviours: do you ask good clarifying questions, do you break the problem into parts, do you pick sensible metrics, and can you communicate findings clearly?
Use the SCOPE framework to structure any case study answer:
Example: "Our app's daily active users dropped 15% last week. What happened?"
S — We want to diagnose a 15% DAU drop in the last 7 days.
C — Is this a specific platform (Android/iOS/web)? Did we have any release, marketing campaign stop, or outage in this period? Is the drop in new users, returning users, or both?
O — I would first segment the drop by platform, geography, and new vs returning. Then check for external events (app store reviews, social media complaints). Then look at funnel drop-off — are users reaching the app but bouncing at login, or not opening at all?
P — Metrics: DAU by segment, session start rate, login success rate, crash rate, push notification open rate.
E — I would bring a 1-page Slack summary to the product team the same day with the top hypothesis and the data supporting it, so they can make a call on whether to roll back the release or investigate further.
Take-Home Assignments — How to Stand Out
Take-home assignments are increasingly common for mid-level and senior data analyst roles. Most candidates spend 80% of the time on analysis and 20% on presentation — successful candidates invert this ratio.
- Dump 15 charts with no narrative
- Start with data cleaning, never reach the business question
- Use default Seaborn styling (looks like a homework assignment)
- Write "insights" that restate what the chart already shows
- Submit 10 minutes before the deadline
- Start with a 3-line executive summary (key finding, impact, recommendation)
- Answer the exact question asked, not every possible question
- 3-5 focused charts with one clear takeaway per chart
- State your assumptions and their limitations
- Submit 4-6 hours early — shows execution discipline
Notebook Structure That Works
Section 0 (1 cell) — Executive Summary: 3 bullet points. Key finding, business impact estimate, recommended action.
Section 1 — Data Overview: shape, dtypes, nulls, sample rows. No more than 5 cells.
Section 2 — Data Cleaning: document what you found and why you made each decision.
Section 3 — Analysis: 3-4 numbered analysis blocks, each ending with a markdown cell "Insight: [one sentence]".
Section 4 — Conclusion: repeat the executive summary + next steps + what additional data would strengthen the analysis.
HR Round — Questions and Answers That Actually Work
HR rounds are eliminators, not selectors. The goal is to clear the bar, not impress. Avoid red flags: badmouthing previous employer, inconsistency between resume and answers, or vague answers to direct questions.
"Tell me about yourself."
Use the Present → Past → Future structure. Current role and key achievement (2 sentences). How you got here (1 sentence). Why this role excites you (1 sentence). Total: under 90 seconds.
"Why are you leaving your current job?"
Keep it forward-looking, not backward-complaining. "I've built solid skills in X and Y, and I'm looking for a role where I can work with [bigger data / more strategic problems / closer to business decisions]." Avoid salary as the first reason even if it's true.
"What is your expected CTC?"
Research the band before the call. Give a range where your target sits at the bottom: "Based on my research and experience, I'm targeting ₹X–Y LPA. I'm open to discussion based on the full package." Never say "anything you offer is fine."
"Where do you see yourself in 3 years?"
Show growth ambition that stays relevant to data. "I want to be leading analysis for a key product or business unit — moving from reporting to shaping decisions. I'd like to manage a small team within that timeframe." Avoid "data scientist" if the company doesn't want you there.
"Tell me about a time you made a mistake in analysis."
Use STAR (Situation, Task, Action, Result). Be specific — a real mistake shows self-awareness. Focus 70% of the answer on what you did to fix it and what you changed to prevent recurrence. Avoid mistakes that reveal you don't know basics.
Salary Negotiation — A Practical Script
Most candidates in India leave 10-20% on the table by accepting the first offer or by not negotiating at all. Negotiation is expected — it is not rude or greedy.
| Experience | Typical market range (Delhi NCR) | Reasonable ask above offer |
|---|---|---|
| 0-1 yr (fresher) | ₹3.5 – 6 LPA | 5-10% |
| 1-3 yrs | ₹6 – 12 LPA | 10-15% |
| 3-6 yrs | ₹12 – 22 LPA | 10-20% |
| 6+ yrs / senior | ₹20 – 35 LPA | 15-25% |
The Negotiation Script
Step 1 — Thank and repeat: "Thank you for the offer — I'm excited about the role and the team. I wanted to discuss the compensation to make sure we're aligned."
Step 2 — Anchor with research: "Based on my research on Glassdoor and AmbitionBox, and speaking with peers in similar roles, the market for this experience band is ₹X–Y. I was hoping we could get to ₹[your target]."
Step 3 — Wait in silence. The next person to speak after you name a number loses leverage. Do not fill the silence.
Step 4 — If they push back: "I understand there may be a band constraint. Is there flexibility on the joining bonus, variable pay, or review cycle timing?" Move the conversation to the full package, not just base salary.
30-Day Interview Prep Plan
- Complete 30 HackerRank SQL problems (Easy/Medium)
- Master all JOIN types with real examples
- Practice window functions: ROW_NUMBER, RANK, LAG, SUM OVER
- Write 5 queries on a sample e-commerce dataset
- 10 pandas tasks: clean, merge, groupby, pivot
- Build one clean Jupyter analysis notebook
- Excel: PivotTable, VLOOKUP, INDEX-MATCH, named ranges
- Practice explaining your code out loud
- Practice 5 case studies using SCOPE framework
- Read 3 real business analytics blog posts
- Record yourself answering one case study
- Get feedback from a peer or mentor
- Tailor resume to 5 target JDs
- Research salary bands for each company
- Prepare 3 STAR stories from past work
- Mock interview with a peer — full format
Interview Patterns by Company Type — Delhi NCR
| Company type | Location cluster | Technical focus | Rounds |
|---|---|---|---|
| Large IT (TCS, HCL, Infosys) | Noida Sec 62, Expressway | SQL + basic Python, Excel | 3 rounds + aptitude test |
| BFSI (banks, NBFCs) | Gurugram, Delhi | SQL, advanced Excel, domain metrics | 3-4 rounds |
| E-commerce / D2C | Gurugram, Noida Expressway | SQL + Python, A/B testing basics | 3 rounds + take-home |
| Consulting / Analytics firms | Gurugram Cyber City | Case study heavy, SQL moderate | 4-5 rounds |
| Startups | Noida Sec 16-18, Gurugram | Full-stack: SQL + Python + BI tool | 2-3 rounds, fast |
| Evika Academy graduates | Noida Sec 51, training here | Full prep covered in this series | All rounds — guided prep |
Frequently Asked Questions
What SQL topics are asked in data analyst interviews in India?
Indian data analyst interviews focus on JOINs (INNER, LEFT, SELF), GROUP BY with HAVING, window functions (ROW_NUMBER, RANK, LAG/LEAD, SUM OVER PARTITION BY), subqueries vs CTEs, NULL handling, and date functions. Most companies test these on a live coding platform like HackerRank or a shared Google Sheet.
How do I answer a case study question in a data analyst interview?
Use the SCOPE framework: State the business goal, Clarify assumptions, Outline the analysis approach, Present the metrics you would track, and Explain how you would communicate findings. Always ask a clarifying question before diving in — it shows structured thinking.
How many rounds are in a typical data analyst interview in India?
Most Indian companies run 3-4 rounds: (1) Screening call with HR, (2) Technical round — SQL and Excel/Python tasks, (3) Case study or take-home assignment, (4) Final round with hiring manager or business stakeholder. Startups often compress this to 2-3 rounds.
How should I negotiate salary as a data analyst in India?
Research the band on Glassdoor and AmbitionBox before the call. Always quote a range where your target is the lower end (e.g., ₹12-14L if you want ₹12L). Anchor with your current CTC + an increment justification — skill upgrade, higher market rate, or specific project impact. Never accept on the spot; ask for 24-48 hours.
What Python questions are asked in data analyst interviews?
Common Python interview tasks: reading and merging DataFrames, handling missing values with fillna/dropna, groupby + agg, applying lambda functions, pivot_table, converting dtypes, and basic matplotlib/seaborn charts. Deep ML is not expected — pandas proficiency is the bar.
What is the difference between ROW_NUMBER, RANK, and DENSE_RANK in SQL?
ROW_NUMBER assigns a unique sequential number with no ties. RANK assigns the same number to ties but skips the next rank (1,1,3). DENSE_RANK assigns the same number to ties and does not skip (1,1,2). Interviewers often ask you to pick which one to use for "top N per group" queries — ROW_NUMBER is usually correct when you want exactly N rows per group.
How do I prepare for a take-home data analyst assignment?
Read the brief twice before opening the dataset. Start with exploratory data analysis — row count, column types, nulls, duplicates. Answer the specific question asked, not every question possible. Format outputs as a clean Jupyter notebook or slides with a 3-5 line business summary at the top. Submit before the deadline — late submissions are often auto-rejected.
Practice Interviews With a Real Mentor
Evika Academy, Noida Sector 51, offers mock interview sessions with industry mentors who have sat on the other side of the table. Get specific feedback — not generic tips.
📱 Book a Mock Interview on WhatsApp