Zerodha Data Analytics Interview Questions & Answers
Curated interview practice questions with answers. These are practice scenarios, not a verified list of past interview questions.
About Zerodha hiring for Data Analytics roles
Zerodha is an Indian stockbroker known for discount brokerage and platforms like Kite, Console and Coin. It runs a relatively small in-house technology team that builds trading and back-office systems. Hiring for technical and analytics roles is limited and tends to value practical skills, open-source work and self-learning.
For Data Analytics roles, this Zerodha practice set focuses most on Power BI (6), Data Cleaning (6), Statistics and Case Studies (6), Tableau (4). It has 4 easy, 33 medium, 3 hard questions, so you can start easy and work up to the harder ones.
Company type
Fintech
Headquarters
Bengaluru, India
Main India offices
Bengaluru
Zerodha Data Analytics interview process
Application review (projects or GitHub)
Technical discussion
Assignment or practical task
Founder or team round
Typical pattern based on public candidate experiences. Rounds vary by role, team and year.
Solved for ZerodhaStart practicing
3 QUESTIONS FREESign up to unlock the full question bank and track your progress.Unlock every question and answer, then continue practising company-wise and package-wise.
A dataflow is Power Query running in the Power BI Service. It extracts and cleans data once and stores the result so many datasets can reuse it. For example, a single cleaned Customer table can feed sales, finance and marketing reports, ensuring consistent logic and reducing load on the source. Dataflows suit shared, reusable preparation; logic that only one report needs can stay in that report's Power Query.
02
Write SQL to flag rows that fail basic validation rules in a customer table.
SELECT customer_id,
CASE WHEN email IS NULL OR email NOT LIKE '%_@_%._%' THEN 1 ELSE 0 END AS bad_email,
CASE WHEN LENGTH(pincode) <> 6 THEN 1 ELSE 0 END AS bad_pincode,
CASE WHEN signup_date > CURRENT_DATE THEN 1 ELSE 0 END AS future_signup,
CASE WHEN age NOT BETWEEN 18 AND 100 THEN 1 ELSE 0 END AS bad_age
FROM customers;
-- sum each flag to report the error rate per rule
03
How would you investigate a sudden 20% drop in daily sales?
Check data pipelines first, then segment by channel, region, product and device, compare to the same period last year, and look for launches, outages or campaigns.
04
Write a Tableau calculation to find each customer's first purchase date and flag new versus repeat orders.
// First Purchase Date
{ FIXED [Customer ID] : MIN([Order Date]) }
// Order Type
IF [Order Date] = [First Purchase Date]
THEN 'New'
ELSE 'Repeat'
END
// Cohort Month for retention analysis
DATETRUNC('month', [First Purchase Date])
05
How would you design a sales dashboard for executives?
Start with KPIs (revenue, margin, growth), add trend and comparison to target, allow drill-down by region and product, keep it to one screen and test with the audience.
06
Average delivery time improved by 4 minutes, but customer complaints about late deliveries went up. How do you investigate?
An average can improve while the tail gets worse. I would look at the distribution: median, 90th and 95th percentiles and the share of orders beyond the promised time. Then break it down by city, time slot and restaurant to see where late orders cluster. Also check whether promised times changed, whether complaint tracking changed and whether a few very fast orders pulled the mean down.
07
Write a DAX measure for year-over-year sales growth percentage.
Sales LY =
CALCULATE([Total Sales], SAMEPERIODLASTYEAR('Date'[Date]))
Sales YoY % =
VAR cur = [Total Sales]
VAR prev = [Sales LY]
RETURN
DIVIDE(cur - prev, prev)
-- needs a marked date table; format the measure as a percentage
A conformed dimension is one dimension table with the same keys, attributes and meanings shared by several fact tables. For example, one date and one product dimension used by sales, returns and inventory facts. Because they conform, you can compare sales and returns by the same product category in one report without mismatched definitions. Conformed dimensions are the main way an enterprise warehouse stays consistent across departments.
09
Many reporting queries in your team use SELECT DISTINCT to remove duplicate rows. What is the risk?
SELECT DISTINCT often hides a real problem, such as a join on the wrong key or a one-to-many join that multiplies rows. The output looks clean, but sums computed before the DISTINCT, or legitimate repeated rows, can be wrong, and DISTINCT adds a costly sort on large tables. Instead, find why duplicates appear, fix the join or aggregate the child table first, and add a uniqueness test on the key.
10
What is statistical significance vs practical significance?
Relationships, the default logical layer, connect tables flexibly and Tableau decides join type and level per view, avoiding duplicated measures. Joins physically merge tables into one at a fixed level, which can duplicate rows if grains differ. Blending combines data from separate data sources at the view level using a primary and secondary source, aggregating the secondary first. Prefer relationships, use joins for specific row-level needs, and blending as a last resort.
12
Traffic suddenly doubled from one city, with near-zero engagement time and no conversions. What is happening and what do you do?
This is very likely bot or spam traffic, or a misfiring tag. Check the user agents, IP ranges, hostnames, screen resolutions and landing pages for that traffic. If it is bots, exclude it with filters or data segments in analytics and in your reporting layer, and inform the web team so they can block it. Then restate the affected dashboard numbers, because bots inflate sessions and pull down conversion rate.
A tool that summarises large tables by dragging fields into rows, columns, values and filters, so you can slice sales by region or month without writing formulas.
14
What is the difference between COUNT, COUNTA and COUNTIF?
A transaction is a group of SQL statements that succeed or fail together, such as debiting one account and crediting another. ACID: Atomicity means all or nothing; Consistency means rules and constraints stay valid; Isolation means concurrent transactions do not see each other's partial work; Durability means committed data survives crashes. Analysts mostly read data, but knowing ACID explains why reports should read committed data.
17
An inner join between orders and customers returns fewer orders than the orders table has. What could be wrong?
Orphan records are child rows whose foreign key has no matching parent, such as orders with a customer_id that does not exist in the customer table. They break joins silently: an inner join drops them and totals fall short. Find them with a LEFT JOIN from the child to the parent and filter where the parent key IS NULL. Then fix the source, add an Unknown member, or report them separately.
18
What is DAX and how does it differ from Excel formulas?
Read the execution plan, add or fix indexes, select only needed columns, filter early, avoid functions on indexed columns, and replace correlated subqueries with joins.
20
What are statistical power and minimum detectable effect (MDE)?
Power is the probability that the test detects a real effect of a given size, commonly set at 80%. The minimum detectable effect is the smallest lift you care about and can reliably detect with your sample size. Smaller MDEs, lower baseline rates and higher power all need more users. If you can only get 10,000 users a week, you may only be able to detect large lifts, which should shape what you test.
21
What is the difference between SUM and SUMX in DAX?
SUM adds up a single column in the current filter context. SUMX is an iterator: it goes row by row over a table, evaluates an expression for each row, then sums the results. Use SUMX when the value must be computed per row first, for example SUMX(Sales, Sales[Qty] * Sales[Price]). Iterators are flexible but can be slower on very large tables, so storing a simple column is sometimes better.
This is an encoding mismatch: a UTF-8 file was read as a different encoding such as Latin-1 or Windows-1252. Re-read it with the right encoding, for example pd.read_csv(path, encoding='utf-8') or 'utf-8-sig' for files with a byte order mark, or set the file origin in Excel and Power Query import. Avoid re-saving through tools that change encoding, and agree on UTF-8 for all exchanges, especially for Hindi or other Indian language text.
23
Write SQL to find the first-touch and last-touch channel for every user who converted.
WITH touches AS (
SELECT t.user_id, t.channel, t.touch_ts,
ROW_NUMBER() OVER (PARTITION BY t.user_id ORDER BY t.touch_ts) AS first_rank,
ROW_NUMBER() OVER (PARTITION BY t.user_id ORDER BY t.touch_ts DESC) AS last_rank
FROM marketing_touches t
JOIN conversions c
ON c.user_id = t.user_id
AND t.touch_ts <= c.converted_ts
)
SELECT user_id,
MAX(CASE WHEN first_rank = 1 THEN channel END) AS first_touch,
MAX(CASE WHEN last_rank = 1 THEN channel END) AS last_touch
FROM touches
GROUP BY user_id;
24
What are parameters in Tableau and how do you use them?
A parameter is a single user-controlled value, such as a number, date or string, that is independent of the data. On its own it does nothing; you reference it in calculations, filters, reference lines or bins. Common uses are a Top N selector, a what-if growth rate, or a measure switcher where a CASE statement picks Sales, Profit or Quantity based on the parameter. Parameter actions let users set it by clicking a mark.
# Fill missing delivery_days with the median for that city
df['delivery_days'] = (
df['delivery_days']
.fillna(df.groupby('city')['delivery_days'].transform('median'))
)
# Rows in a city with no values at all stay NaN; fall back to overall median
df['delivery_days'] = df['delivery_days'].fillna(df['delivery_days'].median())
SUMIFS adds values that meet several conditions; COUNTIFS counts rows that meet several conditions.
Example: =SUMIFS(Sales, Region, "North", Month, "Jan")
28
Tell me about a time you used data to challenge an assumption.
Situation: our team believed weekend discounts drove most sales. Task: I was preparing the monthly review. Action: I compared discount and non-discount weekends over six months and controlled for paydays and festivals. Discounts moved sales forward from the following week but added little overall. I presented it with one clear chart. Result: management trialled fewer discount weekends, and margin improved without a fall in monthly revenue.
29
What does apply do in pandas and why can it be slow?
apply runs a Python function on each row or column of a DataFrame, or each value of a Series. It is flexible but slow on large data because it loops in Python rather than using optimised C code. For example, df['total'] = df['qty'] * df['price'] is far faster than an apply with a lambda. Prefer vectorised operations, np.where, np.select, map with a dictionary, or string accessor methods first.
30
What is a holdout group and why do teams keep one?
A holdout group is a small share of users, often 5-10%, kept out of a feature or of all marketing campaigns for a long time. Comparing them with everyone else shows the cumulative long-term impact, which individual short tests miss, and checks whether many small wins really add up. For example, a notification holdout shows whether push messages raise monthly retention or just shift activity earlier.
31
Tell me about a time tracking broke and you had to fix the reporting.
Situation: after a checkout redesign, purchases in our analytics fell 35% overnight while orders were normal. Task: find the cause and protect the weekly report. Action: I compared analytics with the order table by page and device, found the purchase tag no longer fired on the new UPI payment success page, and worked with developers to fix it. Result: I backfilled the gap from order data, added a footnote and set up a daily mismatch alert.
32
Sales dropped 20% last month. How will you analyse it?
Confirm data accuracy first → break down by region, product, channel and customer segment → compare with seasonality and last year → check pricing, stock-outs, marketing changes and funnel conversion → present the root causes with clear charts.
I would ask which decisions each new visual supports and how often they will look at it. Usually a few are essential and the rest are nice to have. I would propose keeping the main page focused on core KPIs and moving detail into drill-through pages, tooltips or a separate analysis tab. Showing a quick mock-up of both versions helps them see that the cleaner page answers questions faster.
35
You must present to the sales team that they missed their quarterly target by 18%. How do you handle it?
Lead with the fact clearly, then show where the gap came from, such as which regions, products or deal stages, so it becomes actionable rather than a blame session. Separate controllable causes like lower conversion from uncontrollable ones like a delayed product launch. Highlight what did work, and end with two or three specific actions and the metrics to track them. Share the numbers with sales leaders privately first, to avoid surprises.
36
Write SQL to calculate open rate and click-through rate for each email campaign.
SELECT
s.campaign_id,
COUNT(DISTINCT s.user_id) AS delivered,
COUNT(DISTINCT o.user_id) AS opened,
COUNT(DISTINCT c.user_id) AS clicked,
ROUND(100.0 * COUNT(DISTINCT o.user_id) / COUNT(DISTINCT s.user_id), 1) AS open_rate,
ROUND(100.0 * COUNT(DISTINCT c.user_id) / COUNT(DISTINCT s.user_id), 1) AS ctr
FROM email_sends s
LEFT JOIN email_opens o ON o.campaign_id = s.campaign_id AND o.user_id = s.user_id
LEFT JOIN email_clicks c ON c.campaign_id = s.campaign_id AND c.user_id = s.user_id
WHERE s.status = 'delivered'
GROUP BY s.campaign_id;
37
How do you unpivot a wide monthly sales sheet into a long table in Power Query?
Load the table into Power Query. Select the identifier columns such as Region and Product, then choose Transform, Unpivot Other Columns. The month columns become two columns, Attribute and Value; rename them Month and Sales. Change Month to a date type and Sales to a decimal number. Using Unpivot Other Columns rather than Unpivot Columns means new months added later are picked up automatically on refresh.
38
Users say a Power BI report still shows yesterday morning's data, although a refresh is scheduled every few hours. What do you check?
Open the semantic model's refresh history in the Service to see whether refreshes failed, for example due to expired credentials, an offline gateway or a timeout. Check whether the report is connected to a different copy of the model, whether the source itself was updated, and whether incremental refresh only covers some partitions. Also confirm the schedule time zone. Finally, add a 'data as of' timestamp on the report.
39
Your sales data contains negative quantities. What do you do with them?
Do not delete them blindly. First find out what they mean: often they are returns, cancellations or credit notes, which are valid business events. Check with the source team or a documentation note. If they are returns, keep them but report gross sales, returns and net sales separately. If some are clearly entry errors, such as a negative quantity on a new order, flag and correct them and log the rule.
40
What types of dashboard actions does Tableau offer?
Filter actions filter other sheets when a user selects or hovers on a mark, such as clicking a region to filter a product table. Highlight actions emphasise related marks without removing others. URL actions open a web page with field values in the link. Go to Sheet navigates to another dashboard. Parameter and set actions update a parameter or set based on selection, enabling advanced interactions like dynamic drill-downs and comparisons.
Tips to crack the Zerodha Data Analytics interview
Build and share real projects on GitHub, as Zerodha is known to value practical work and open-source contributions.
Read Zerodha Varsity to understand trading, markets and investment concepts in depth.
Learn about Zerodha's tech stack and engineering blog, including its use of Go and open-source tools.
Keep a one-minute story ready for every project on your CV: problem, your part, tools, result.
Practise the hard questions on this page aloud; Zerodha interviewers usually ask follow-ups on your first answer.
Frequently asked questions
How many rounds are there in the Zerodha Data Analytics interview?
Candidates usually go through 4 stages: Application review (projects or GitHub); Technical discussion; Assignment or practical task; Founder or team round. The exact rounds change with the role, team, location and your experience, so confirm the process with the recruiter.
Which topics should I prepare for the Zerodha Data Analytics interview?
This practice set leans on Power BI (6), Data Cleaning (6), Statistics and Case Studies (6), Tableau (4). Revise those first, then practise explaining one or two of your own projects end to end, because most Zerodha interviewers ask you to walk through real work.
Are these the exact questions asked at Zerodha?
No. These are curated practice questions that match the skills and difficulty usually tested in fintech interviews like Zerodha's. They are not a leaked or verified list of past questions.
Where does Zerodha hire Data Analytics professionals in India?
Zerodha has large teams in Bengaluru. Openings and locations change often, so check the Zerodha careers page and filter by city and experience.