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

⏱ 18 min read📅 September 2026📍 India / Delhi NCR

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.

RoundFormatWhat is testedDuration
Round 1HR screening callMotivation, CTC, notice period, role fit20-30 min
Round 2Technical — SQL + Excel/PythonLive coding or shared file45-60 min
Round 3Case study / take-homeBusiness thinking + analysis2-4 hrs or 24-48 hrs take-home
Round 4Final — manager or stakeholderCommunication, past work, fit30-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;
5 SQL Interview Habits That Win Points:
  • 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)
Python Interview Cheat-Sheet (pandas methods to know cold):

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:

S
State the business goal
Repeat the question in your own words. "So we want to understand why conversion rate dropped in Q3 — is that right?"
C
Clarify assumptions
Ask 1-2 scoping questions. "Are we looking at mobile only, or web too? And which part of the funnel — top or checkout?"
O
Outline your approach
State the 3-4 analysis steps you would run before touching data. This is where most candidates lose marks.
P
Pick the metrics
Name the specific numbers you would track (CVR, bounce rate, cart abandonment %, by segment). Avoid generic answers.
E
Explain how to communicate
Describe the output: a dashboard slide, a 3-bullet Slack message to the product team, a weekly automated report.

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.

What Most Candidates Do (Avoid)
  • 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
What Gets You Shortlisted
  • 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.

ExperienceTypical market range (Delhi NCR)Reasonable ask above offer
0-1 yr (fresher)₹3.5 – 6 LPA5-10%
1-3 yrs₹6 – 12 LPA10-15%
3-6 yrs₹12 – 22 LPA10-20%
6+ yrs / senior₹20 – 35 LPA15-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

Week 1
SQL Foundation
  • 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
Week 2
Python + Excel
  • 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
Week 3
Case Studies
  • 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
Week 4
Apply & Negotiate
  • 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 typeLocation clusterTechnical focusRounds
Large IT (TCS, HCL, Infosys)Noida Sec 62, ExpresswaySQL + basic Python, Excel3 rounds + aptitude test
BFSI (banks, NBFCs)Gurugram, DelhiSQL, advanced Excel, domain metrics3-4 rounds
E-commerce / D2CGurugram, Noida ExpresswaySQL + Python, A/B testing basics3 rounds + take-home
Consulting / Analytics firmsGurugram Cyber CityCase study heavy, SQL moderate4-5 rounds
StartupsNoida Sec 16-18, GurugramFull-stack: SQL + Python + BI tool2-3 rounds, fast
Evika Academy graduatesNoida Sec 51, training hereFull prep covered in this seriesAll 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
🎓 Free Demo Class — Online & Offline · Noida Sector 51