Skip to content

Practical Business Analytics Interview Questions

86 questions with answers. Hands-on questions where you write code, a query, a formula or concrete steps.

How to approach these questions

Talk while you work: say your approach first, write the simplest correct version, then improve it and mention edge cases.

Solved — practicalStart 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.
3 questions free Unlock the rest in seconds
01

How do you find duplicate customers?

Save to ▾
Show answer
SELECT email, COUNT(*) FROM customers GROUP BY email HAVING COUNT(*) > 1;
02

How do you build a PivotTable to analyse sales by region and product?

Save to ▾
Show answer
Create a table, insert a PivotTable, drag region to rows, product to columns, sales to values, and add slicers for month or channel.
03

Guesstimate: how many cups of tea are sold in Delhi per day?

Save to ▾
Show answer
Population about 20 million, adult tea drinkers about 50%, cups bought outside per person around 1 on average. This gives roughly 10 million cups, then adjust for offices and stalls.
04

Guesstimate: how many cars are sold in India every year?

Save to ▾
Show answer
Structure it: households × car-owning share ÷ replacement cycle + first-time buyers + commercial fleet. State each assumption clearly and sanity-check the final number.
05

How do you compute CAGR in Excel?

Save to ▾
Show answer
CAGR = (End value / Start value)^(1/years) - 1, entered as =(B2/A2)^(1/n)-1.
06

How do you create a dashboard in Excel?

Save to ▾
Show answer
Prepare clean data, build PivotTables and PivotCharts, add KPI cards and slicers, and arrange everything on one sheet with a clear layout.
07

SQL: total revenue per month.

Save to ▾
Show answer
SELECT DATE_TRUNC('month', order_date) AS month, SUM(amount) AS revenue FROM orders GROUP BY 1 ORDER BY 1; -- MySQL: DATE_FORMAT(order_date, '%Y-%m')
08

SQL: month-over-month revenue growth.

Save to ▾
Show answer
WITH m AS (SELECT month, SUM(amount) AS rev FROM orders GROUP BY month) SELECT month, rev, ROUND(100.0 * (rev - LAG(rev) OVER (ORDER BY month)) / LAG(rev) OVER (ORDER BY month), 1) AS mom_pct FROM m;
09

How do you chart a trend with a target line?

Save to ▾
Show answer
Create a line or column chart of actuals and add the target as another series formatted as a line.
10

Build a break-even analysis in Excel.

Save to ▾
Show answer
Break-even units = Fixed costs ÷ (Price − Variable cost per unit). Add a data table to test different price and volume scenarios.
11

How do you write a query to find users active in consecutive months?

Save to ▾
Show answer
Get distinct user-month pairs, self-join or use LAG on month per user, and keep rows where the previous month is exactly one month earlier.
12

How do you build a forecast in Excel?

Save to ▾
Show answer
Use historical data with FORECAST.ETS or trend lines, state assumptions, compare against actuals and show best, base and worst scenarios.
13

How would you estimate the market size for an electric scooter in India?

Save to ▾
Show answer
Top-down: two-wheeler market x EV share x addressable segment. Bottom-up: target households x adoption rate x price. Compare both for a sanity check.
14

How would you forecast next quarter's sales in Excel?

Save to ▾
Show answer
Use FORECAST.ETS or a trendline on monthly history, check seasonality, compare with a simple moving average and present a range, not a single number.
15

How do you estimate the annual revenue of a coffee shop chain?

Save to ▾
Show answer
Number of outlets x daily customers x average bill x operating days, then validate using footfall, peak hours and similar chains.
16

Guesstimate: how many pizzas are sold in Mumbai on a weekend?

Save to ▾
Show answer
About 20 million people, roughly 10% order pizza on a weekend, about 1 pizza per 2 people in an order. This gives roughly 1 million pizzas, adjusted for outlets and delivery capacity.
17

How do you calculate monthly revenue growth in SQL?

Save to ▾
Show answer
Aggregate revenue per month and use LAG(revenue) OVER (ORDER BY month) to compute (revenue - previous) / previous.
18

Write a user story with acceptance criteria for password reset.

Save to ▾
Show answer
As a customer, I want to reset my password by email so that I can get back into my account. Acceptance criteria: • Reset link expires in 15 minutes • Password rules are shown while typing • A success message appears after reset
19

SQL: top 5 customers by spend.

Save to ▾
Show answer
SELECT customer_id, SUM(amount) AS spend FROM orders GROUP BY customer_id ORDER BY spend DESC LIMIT 5;
20

How do you find the top 5 customers by revenue?

Save to ▾
Show answer
SELECT customer_id, SUM(amount) AS revenue FROM orders GROUP BY customer_id ORDER BY revenue DESC LIMIT 5;
21

How would you size the market for IT courses in Delhi NCR?

Save to ▾
Show answer
Top-down: NCR population aged 18–30 × share of graduates × share wanting paid upskilling × average fee. Cross-check bottom-up with institutes × batches × students × fees. State your assumptions.
22

How would you build a simple financial model in Excel?

Save to ▾
Show answer
Separate inputs, calculations and outputs, link all formulas to input cells, add scenarios and checks, and avoid hard-coded numbers inside formulas.
23

Write DAX measures for Total Sales, Sales Last Year and Year-over-Year growth percent.

Save to ▾
Show answer
Total Sales = SUM(Sales[Amount]) Sales LY = CALCULATE([Total Sales], SAMEPERIODLASTYEAR('Date'[Date])) YoY % = DIVIDE([Total Sales] - [Sales LY], [Sales LY]) -- needs a marked date table; DIVIDE avoids divide-by-zero errors
24

Write a DAX measure for a running total of sales by date.

Save to ▾
Show answer
Running Sales = CALCULATE( [Total Sales], FILTER( ALL('Date'[Date]), 'Date'[Date] <= MAX('Date'[Date]) ) ) -- for a yearly reset use TOTALYTD([Total Sales], 'Date'[Date])
25

Write a DAX measure that shows each category's percent share of total sales.

Save to ▾
Show answer
Category Share % = DIVIDE( [Total Sales], CALCULATE([Total Sales], ALL('Product'[Category])) ) -- ALLSELECTED instead of ALL respects slicers on the page
26

What Power Query steps would you use to clean a messy monthly sales file?

Save to ▾
Show answer
Promote the first row to headers and remove blank or total rows. Set correct data types for dates and amounts, and use locale settings for Indian date formats. Trim and clean text columns, replace errors and nulls, split combined fields like 'City-State', and unpivot month columns into rows. Remove duplicates on the order ID, then merge with the product master. Rename steps clearly so others can follow the logic.
27

Write Tableau calculated fields for profit ratio and a flag for loss-making orders.

Save to ▾
Show answer
// Profit Ratio (aggregate so it works at any level) SUM([Profit]) / SUM([Sales]) // Loss Flag (row level) IF [Profit] < 0 THEN "Loss" ELSE "Profit" END // Put Loss Flag on Color to highlight loss-making orders
28

Write a DAX measure to count distinct active customers in the last 30 days.

Save to ▾
Show answer
Active Customers 30D = CALCULATE( DISTINCTCOUNT(Sales[CustomerID]), DATESINPERIOD('Date'[Date], MAX('Date'[Date]), -30, DAY) ) -- MAX('Date'[Date]) makes it relative to the date in the current filter
29

What are the steps to publish and share a Power BI report with your team?

Save to ▾
Show answer
Save the .pbix and click Publish, choosing the team workspace. In the Service, set data source credentials and, for on-premises data, configure the gateway. Schedule refresh. Then share by giving workspace access to editors, or package it as an app for viewers, and apply row-level security roles if needed. Finally, check it on web and mobile and send the link with a short note on what each page answers.
30

Write an Excel formula that labels sales as High (100000 or more), Medium (50000 or more) or Low.

Save to ▾
Show answer
=IFS(B2>=100000, "High", B2>=50000, "Medium", TRUE, "Low") // older Excel versions: =IF(B2>=100000, "High", IF(B2>=50000, "Medium", "Low"))
31

Write Excel formulas to find the second-highest sales value and the name of the rep who achieved it.

Save to ▾
Show answer
// second highest value =LARGE(C2:C100, 2) // rep name for that value =INDEX(B2:B100, MATCH(LARGE(C2:C100, 2), C2:C100, 0)) // with ties, SORTBY gives a clean list: =TAKE(SORTBY(B2:C100, C2:C100, -1), 2)
32

Write an Excel formula to count the number of unique customers in a column.

Save to ▾
Show answer
// Excel 365 =COUNTA(UNIQUE(A2:A500)) // unique customers in the North region only =COUNTA(UNIQUE(FILTER(A2:A500, B2:B500="North"))) // older versions (no blanks in range) =SUMPRODUCT(1/COUNTIF(A2:A500, A2:A500))
33

Write an Excel formula to extract the domain from an email address.

Save to ▾
Show answer
// Excel 365 =TEXTAFTER(A2, "@") // any version =MID(A2, FIND("@", A2) + 1, LEN(A2)) // Flash Fill (Ctrl+E) also works for one-off cleanup
34

Write an Excel formula for working days between two dates excluding weekends and holidays.

Save to ▾
Show answer
// A2 = start, B2 = end, Holidays = named range of holiday dates =NETWORKDAYS(A2, B2, Holidays) // if the weekend is only Sunday (common in India) =NETWORKDAYS.INTL(A2, B2, 11, Holidays)
35

Write an Excel formula for a two-way lookup that finds sales for a given product and month.

Save to ▾
Show answer
// products in A2:A50, months in B1:M1, data in B2:M50 // G1 = product, G2 = month =INDEX(B2:M50, MATCH(G1, A2:A50, 0), MATCH(G2, B1:M1, 0)) // Excel 365 alternative =XLOOKUP(G1, A2:A50, XLOOKUP(G2, B1:M1, B2:M50))
36

Write an Excel formula for month-to-date sales up to today.

Save to ▾
Show answer
// Dates in Sales[Date], amounts in Sales[Amount] =SUMIFS(Sales[Amount], Sales[Date], ">=" & EOMONTH(TODAY(), -1) + 1, Sales[Date], "<=" & TODAY()) // EOMONTH(TODAY(),-1)+1 gives the first day of the current month
37

How can LET and LAMBDA make complex Excel formulas easier to maintain? Give an example.

Save to ▾
Show answer
// LET names intermediate values so they are calculated once =LET(rev, SUM(C2:C100), cost, SUM(D2:D100), IF(rev=0, 0, (rev - cost) / rev)) // LAMBDA saved in Name Manager as MARGIN =LAMBDA(rev, cost, IF(rev=0, 0, (rev - cost) / rev)) // then use =MARGIN(C2, D2) anywhere in the workbook
38

Write an Excel formula for the weighted average selling price across orders.

Save to ▾
Show answer
// B2:B200 = price per unit, C2:C200 = units sold =SUMPRODUCT(B2:B200, C2:C200) / SUM(C2:C200) // a simple AVERAGE(B2:B200) would wrongly give a small order // the same weight as a large one
39

Write a SQL query to find the second-highest salary in an employees table.

Save to ▾
Show answer
SELECT MAX(salary) AS second_highest FROM employees WHERE salary < (SELECT MAX(salary) FROM employees); -- or with a window function SELECT DISTINCT salary FROM ( SELECT salary, DENSE_RANK() OVER (ORDER BY salary DESC) AS rk FROM employees ) t WHERE rk = 2;
40

Write a SQL query to list customers who have never placed an order.

Save to ▾
Show answer
SELECT c.customer_id, c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.customer_id WHERE o.order_id IS NULL; -- alternative SELECT customer_id, name FROM customers c WHERE NOT EXISTS ( SELECT 1 FROM orders o WHERE o.customer_id = c.customer_id );
41

Write a SQL query for the top 3 products by revenue in each category.

Save to ▾
Show answer
WITH ranked AS ( SELECT category, product_id, SUM(amount) AS revenue, DENSE_RANK() OVER (PARTITION BY category ORDER BY SUM(amount) DESC) AS rk FROM sales GROUP BY category, product_id ) SELECT category, product_id, revenue FROM ranked WHERE rk <= 3 ORDER BY category, rk;
42

Write a SQL query for a 7-day rolling average of daily revenue.

Save to ▾
Show answer
WITH daily AS ( SELECT order_date, SUM(amount) AS revenue FROM orders GROUP BY order_date ) SELECT order_date, revenue, AVG(revenue) OVER (ORDER BY order_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS rolling_7d FROM daily ORDER BY order_date; -- fill missing dates from a calendar table first, or gaps skew the average
43

Write a SQL query to calculate the repeat purchase rate.

Save to ▾
Show answer
WITH per_customer AS ( SELECT customer_id, COUNT(DISTINCT order_id) AS orders FROM orders GROUP BY customer_id ) SELECT ROUND(100.0 * SUM(CASE WHEN orders >= 2 THEN 1 ELSE 0 END) / COUNT(*), 2) AS repeat_rate_pct FROM per_customer;
44

Write a SQL query that groups customers into spend buckets using CASE WHEN.

Save to ▾
Show answer
SELECT CASE WHEN total_spend >= 50000 THEN 'High' WHEN total_spend >= 10000 THEN 'Medium' ELSE 'Low' END AS segment, COUNT(*) AS customers FROM ( SELECT customer_id, SUM(amount) AS total_spend FROM orders GROUP BY customer_id ) t GROUP BY 1 ORDER BY customers DESC;
45

Write a SQL query to get each customer's first order date and first order amount.

Save to ▾
Show answer
WITH ordered AS ( SELECT customer_id, order_date, amount, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_date, order_id) AS rn FROM orders ) SELECT customer_id, order_date AS first_order_date, amount AS first_order_amount FROM ordered WHERE rn = 1;
46

Write a SQL query to show cumulative revenue by month.

Save to ▾
Show answer
WITH monthly AS ( SELECT DATE_TRUNC('month', order_date) AS month, SUM(amount) AS revenue FROM orders GROUP BY 1 ) SELECT month, revenue, SUM(revenue) OVER (ORDER BY month) AS cumulative_revenue FROM monthly ORDER BY month; -- add PARTITION BY EXTRACT(YEAR FROM month) to reset each year
47

Write a SQL query that shows revenue per region with one column per quarter.

Save to ▾
Show answer
SELECT region, SUM(CASE WHEN EXTRACT(QUARTER FROM order_date) = 1 THEN amount ELSE 0 END) AS q1, SUM(CASE WHEN EXTRACT(QUARTER FROM order_date) = 2 THEN amount ELSE 0 END) AS q2, SUM(CASE WHEN EXTRACT(QUARTER FROM order_date) = 3 THEN amount ELSE 0 END) AS q3, SUM(CASE WHEN EXTRACT(QUARTER FROM order_date) = 4 THEN amount ELSE 0 END) AS q4 FROM orders WHERE EXTRACT(YEAR FROM order_date) = 2026 GROUP BY region;
48

Write a SQL query for a signup to purchase funnel from an events table.

Save to ▾
Show answer
WITH steps AS ( SELECT user_id, MAX(CASE WHEN event = 'signup' THEN 1 ELSE 0 END) AS s1, MAX(CASE WHEN event = 'add_to_cart' THEN 1 ELSE 0 END) AS s2, MAX(CASE WHEN event = 'purchase' THEN 1 ELSE 0 END) AS s3 FROM events WHERE event_date >= '2026-10-01' GROUP BY user_id ) SELECT SUM(s1) AS signups, SUM(s1 * s2) AS carts, SUM(s1 * s2 * s3) AS purchases, ROUND(100.0 * SUM(s1 * s2 * s3) / NULLIF(SUM(s1), 0), 2) AS conv_pct FROM steps;
49

CAC is 1,200 rupees, average monthly revenue per customer is 500 rupees and gross margin is 40 percent. What is the CAC payback period?

Save to ▾
Show answer
Monthly gross profit per customer is 500 times 40 percent, which is 200 rupees. Payback period equals CAC divided by monthly gross profit, so 1,200 divided by 200 gives 6 months. If customers churn on average before 6 months, the business loses money on acquisition. Using revenue instead of gross profit would wrongly suggest 2.4 months, which is why margin must be included.
50

A subscription app starts the month with 8,000 customers, gains 1,200 and loses 400. Calculate churn and net growth.

Save to ▾
Show answer
Churn rate uses customers at the start: 400 divided by 8,000 gives 5 percent. Ending customers are 8,000 plus 1,200 minus 400, which is 8,800. Net growth is 800 divided by 8,000, or 10 percent. Do not divide churned customers by the ending count, since new joiners who have not had a chance to churn would understate the churn rate.
51

An order has a value of 600 rupees, product cost 360, delivery 60, payment fee 12 and a discount of 50. What is the contribution margin?

Save to ▾
Show answer
Net revenue after discount is 600 minus 50, which is 550 rupees. Variable costs are 360 plus 60 plus 12, totalling 432. Contribution margin is 550 minus 432, so 118 rupees per order, or about 21 percent of net revenue. This is what each order contributes towards fixed costs such as salaries and rent. If the discount were raised to 150, the order would contribute only 18 rupees.
52

How would you structure a weekly project status update for stakeholders?

Save to ▾
Show answer
Use a short, fixed format. Start with an overall status of green, amber or red and one line explaining it. Then list what was completed this week, what is planned next week, key risks and issues with owners, and decisions needed from stakeholders with dates. Add a link to the detailed tracker. Keep it under one screen, and highlight anything that changed since last week.
53

Write Given-When-Then acceptance criteria for applying a discount coupon at checkout.

Save to ▾
Show answer
Given a cart of 1,200 rupees and a valid coupon SAVE10 with a minimum order of 1,000 rupees, when the user applies it, then 10 percent is deducted and the new total is shown. Given an expired coupon, when applied, then the message 'This coupon has expired' appears and the total is unchanged. Given a cart below the minimum, when applied, then the user is told how much more to add.
54

Split the epic 'Customers can track their order online' into user stories.

Save to ▾
Show answer
Possible stories: As a customer, I want to see my order status (placed, packed, shipped, delivered) so that I know its progress. As a customer, I want an SMS or email when the status changes so that I do not have to check. As a customer, I want the expected delivery date so that I can plan. As a customer, I want a courier tracking link once shipped. As support staff, I want to see the same timeline so that I can answer queries.
55

What steps would you follow to create an AS-IS process map for a customer refund process?

Save to ▾
Show answer
Define the scope: where the process starts, such as a refund request, and where it ends, such as money credited. Identify the roles involved and draw swimlanes. Interview and observe each role, capturing steps, decisions, systems used, handoffs and time taken. Draw the flow in BPMN, mark pain points like rework loops and waiting time, and add measures such as average refund time. Validate the map with the people who do the work.
56

Write a SQL query to calculate the DAU to MAU stickiness ratio for a month.

Save to ▾
Show answer
WITH daily AS ( SELECT event_date, COUNT(DISTINCT user_id) AS dau FROM events WHERE event_date >= '2026-10-01' AND event_date < '2026-11-01' GROUP BY event_date ), monthly AS ( SELECT COUNT(DISTINCT user_id) AS mau FROM events WHERE event_date >= '2026-10-01' AND event_date < '2026-11-01' ) SELECT ROUND(AVG(d.dau) * 1.0 / MAX(m.mau), 3) AS stickiness FROM daily d CROSS JOIN monthly m;
57

Write a SQL query for Day-7 retention by weekly sign-up cohort.

Save to ▾
Show answer
WITH cohort AS ( SELECT user_id, signup_date, DATE_TRUNC('week', signup_date) AS cohort_week FROM users ), ret AS ( SELECT DISTINCT c.user_id FROM cohort c JOIN events e ON e.user_id = c.user_id AND e.event_date = c.signup_date + INTERVAL '7 day' ) SELECT c.cohort_week, COUNT(*) AS users, ROUND(100.0 * COUNT(r.user_id) / COUNT(*), 1) AS d7_retention_pct FROM cohort c LEFT JOIN ret r ON r.user_id = c.user_id GROUP BY c.cohort_week ORDER BY c.cohort_week;
58

Control has 10,000 users with 400 purchases and the variant has 10,000 users with 460 purchases. Calculate the lift.

Save to ▾
Show answer
Control conversion is 400 divided by 10,000, which is 4.0 percent. Variant conversion is 460 divided by 10,000, which is 4.6 percent. The absolute lift is 0.6 percentage points and the relative lift is 0.6 divided by 4.0, which is 15 percent. Before calling it a win, run a two-proportion significance test and check the confidence interval and guardrail metrics.
59

What steps would you follow to create a tracking plan for a new 'save for later' feature?

Save to ▾
Show answer
Start from the questions to answer: how many users discover it, use it and later buy saved items. Define events such as save_clicked, saved_item_viewed, saved_item_removed and saved_item_purchased, with properties like product ID, price, source screen and platform. Follow the existing naming convention, assign owners, review with developers, and test events in a staging build. Build the dashboard before launch so data is checked on day one.
60

Guesstimate: how many smartphones are sold in India each year?

Save to ▾
Show answer
Use a replacement plus new-buyer approach. India has about 144 crore people; assume around 60 crore active smartphone users. If people replace phones every 4 years on average, replacements are about 15 crore a year. Add first-time buyers, say 2 to 3 percent of the remaining adult population, roughly 1.5 crore. The estimate is about 16 to 17 crore phones a year, which is close to reported industry numbers of around 15 crore.
61

Guesstimate: how many weddings take place in India in a year?

Save to ▾
Show answer
Assume a population of about 144 crore and an average life expectancy of about 70 years, so roughly 2 crore people reach a typical marriage age each year. If about 95 percent of them marry at some point, that is around 1.9 crore people, or about 95 lakh weddings, since each wedding involves two people. A reasonable estimate is around 1 crore weddings per year, concentrated in the winter wedding season.
62

Guesstimate: what is the annual revenue of one multiplex screen in a large Indian city?

Save to ▾
Show answer
Assume 5 shows a day and 200 seats with 30 percent average occupancy, giving 300 tickets a day. At an average ticket of 250 rupees, ticket revenue is 75,000 rupees a day. Food and beverage adds about 40 percent of ticket revenue, around 30,000, and screen ads maybe 5,000. That is about 1.1 lakh a day, or around 4 crore a year. Weekends and blockbuster releases push occupancy higher.
63

Describe how you would model an employee leave approval process in BPMN.

Save to ▾
Show answer
Use one pool for the company with lanes for Employee, Manager and HR system. Start event: leave request submitted. Task: system checks leave balance. Exclusive gateway: balance sufficient? If no, end event that notifies the employee. If yes, user task: manager reviews. Add an interrupting timer boundary event of 3 days that escalates to the skip-level manager. Gateway: approved or rejected. Approved path updates the leave balance and calendar, then both paths notify the employee and end.
64

What steps would you follow to run a process discovery workshop?

Save to ▾
Show answer
Before: agree scope and process boundaries, invite people who actually do the work, not only managers, and collect existing documents and sample cases. During: state the goal, map the happy path first on a wall or digital board, then add exceptions, pain points, handoffs and volumes, and park off-topic issues. Keep timing visible. After: convert the output to a clean BPMN diagram within two days, circulate it for validation, and record open questions with owners and dates.
65

How do you calculate cycle time, touch time and process efficiency? Give an example.

Save to ▾
Show answer
Cycle time (lead time) is the total elapsed time from the start to the end of a case. Touch time is the time someone actually works on it. Process cycle efficiency is touch time divided by cycle time. Example: a refund takes 5 working days (40 working hours) end to end, but the agents spend only 2 hours in total working on it. Efficiency is 2 / 40 = 5 percent, so 95 percent of the time is waiting, and queues are the main target.
66

Describe a BPMN model for a purchase order process where credit check and stock check happen at the same time.

Save to ▾
Show answer
Start event: purchase order received. Task: validate order details. A parallel gateway then splits into two paths: Finance lane runs Check customer credit, Warehouse lane runs Check stock. A second parallel gateway joins them, waiting for both to complete. An exclusive gateway then decides: credit OK and stock available goes to Confirm order and Schedule dispatch; otherwise go to Notify customer with reason. Using a parallel join here is correct because both results are always needed.
67

What checklist do you apply to a BPMN diagram before sharing it with stakeholders?

Save to ▾
Show answer
Every diagram has clear start and end events and a title with version and owner. Activities use verb-noun names such as Approve invoice. Each gateway is labelled with a question and its outgoing flows with answers. Splits and joins use matching gateway types. Message flows only connect separate pools. No dangling or crossing arrows where avoidable. The happy path reads left to right. Exceptions are handled, and complex rules are referenced to decision tables rather than drawn as gateways.
68

Write a SQL query to find the percentage of orders delivered late in each city.

Save to ▾
Show answer
-- late = delivered after the promised date SELECT city, COUNT(*) AS total_orders, SUM(CASE WHEN delivered_at > promised_at THEN 1 ELSE 0 END) AS late_orders, ROUND(100.0 * SUM(CASE WHEN delivered_at > promised_at THEN 1 ELSE 0 END) / COUNT(*), 2) AS late_pct FROM orders WHERE status = 'DELIVERED' GROUP BY city ORDER BY late_pct DESC;
69

Write an Excel formula that lists all North region orders above 50,000 rupees.

Save to ▾
Show answer
=FILTER(Orders[[OrderID]:[Amount]], (Orders[Region]="North") * (Orders[Amount]>50000), "No matching orders") # Multiplying the two conditions acts as AND. # Use + instead of * for OR logic. # Wrap with SORT(..., 3, -1) to sort by the third column descending.
70

Write a DAX measure for the product return rate that avoids divide-by-zero errors.

Save to ▾
Show answer
Return Rate % = VAR ReturnedQty = SUM ( Returns[Quantity] ) VAR SoldQty = SUM ( Sales[Quantity] ) RETURN DIVIDE ( ReturnedQty, SoldQty, 0 ) // DIVIDE returns the third argument (0) when SoldQty is zero or blank. // Format the measure as a percentage in the model.
71

Write an Excel formula for the NPV of a project with an initial investment today and five yearly cash inflows.

Save to ▾
Show answer
# B1 = discount rate (for example 12%) # B2 = initial investment entered as a negative number # B3:B7 = cash inflows for years 1 to 5 =NPV(B1, B3:B7) + B2 # NPV() assumes the first value comes at the end of year 1, # so the year-0 investment is added outside the function.
72

Write Excel formulas for IRR with yearly cash flows and XIRR with irregular dates.

Save to ▾
Show answer
# Yearly cash flows in B2:B7, year 0 investment negative =IRR(B2:B7) # Irregular dates: cash flows in B2:B7, dates in C2:C7 =XIRR(B2:B7, C2:C7) # XIRR returns an annualised rate based on actual dates, # which suits SIP returns or projects with uneven payments.
73

Revenue is 50 crore, cost of goods sold 30 crore, operating expenses 12 crore and depreciation 2 crore. Calculate EBITDA and EBITDA margin.

Save to ▾
Show answer
Operating expenses here exclude depreciation. Gross profit is 50 - 30 = 20 crore. EBITDA is gross profit minus operating expenses: 20 - 12 = 8 crore. EBITDA margin is 8 / 50 = 16 percent. EBIT is EBITDA minus depreciation, 8 - 2 = 6 crore, which is a 12 percent operating margin. In an interview, state your assumption about whether operating expenses include depreciation, because that changes the answer.
74

Write an Excel formula to calculate the monthly EMI for a loan of 10 lakh rupees at 9 percent annual interest for 5 years.

Save to ▾
Show answer
=PMT(9%/12, 5*12, -1000000) # Returns about 20,758 rupees per month. # rate = annual rate / 12, nper = total months, # pv entered as negative so the EMI shows as positive. # Total interest = EMI * 60 - 1000000.
75

Write a SQL query that shows revenue, cost and gross margin percent by product category.

Save to ▾
Show answer
SELECT p.category, SUM(oi.quantity * oi.unit_price) AS revenue, SUM(oi.quantity * p.unit_cost) AS cost, ROUND(100.0 * (SUM(oi.quantity * oi.unit_price) - SUM(oi.quantity * p.unit_cost)) / NULLIF(SUM(oi.quantity * oi.unit_price), 0), 2) AS gross_margin_pct FROM order_items oi JOIN products p ON p.product_id = oi.product_id GROUP BY p.category ORDER BY gross_margin_pct DESC;
76

Prepare a simple cost-benefit analysis for automating invoice processing.

Save to ▾
Show answer
Costs: software 12 lakh in year 1 plus 3 lakh per year support, and 4 lakh for implementation and training. Benefits: 60,000 invoices a year at 10 minutes saved each is 10,000 hours; at 400 rupees per hour that is 40 lakh, plus around 5 lakh from fewer late-payment penalties. Year-1 net benefit is 45 - 16 = 29 lakh and payback is under six months. Then test sensitivity, for example if only half the time saving is realised.
77

Guesstimate: how many new two-wheeler helmets are sold in India each year?

Save to ▾
Show answer
Drive it from vehicles. Assume about 2 crore new two-wheelers are sold a year, each with an average of 1.5 helmets bought (rider plus pillion), giving 3 crore. The existing fleet is around 25 crore vehicles; assume 60 percent are active and each active vehicle replaces one helmet every 3 years: 15 crore / 3 = 5 crore. Total is about 8 crore helmets a year. Sanity check: enforcement varies by state, so give a range of 6 to 9 crore.
78

How do you write an effective executive summary for an analysis report?

Save to ▾
Show answer
Put it first and keep it to one page or five lines on a slide. Start with the answer or recommendation, then the two or three key findings that support it, each with a number, then the impact in rupees or percentage, and finally the decision or action needed and by when. Avoid methodology details, which go in the appendix. Test it by asking whether a busy leader could act after reading only this section.
79

Write a UAT test case for logging in to a banking app with OTP.

Save to ▾
Show answer
Test case ID: UAT-LOGIN-03. Precondition: registered customer with a verified mobile number. Steps: 1. Open the app and enter the registered mobile number. 2. Tap Send OTP. 3. Enter the 6-digit OTP received by SMS within 3 minutes. 4. Tap Verify. Expected result: the customer lands on the account dashboard, and the login is recorded in the activity log. Related negative cases: wrong OTP shows an error, and three wrong attempts lock login for 30 minutes.
80

Write a defect report for an invoice that calculates GST incorrectly.

Save to ▾
Show answer
Title: Invoice applies 12 percent GST instead of 18 percent for service items. Environment: UAT, build 2.4.1. Steps: create an order with service item SRV-101 at 1,000 rupees for a customer in Maharashtra and generate the invoice. Expected: CGST 90 and SGST 90, total 1,180. Actual: CGST 60 and SGST 60, total 1,120. Severity: high, as it affects tax compliance. Attachments: invoice PDF and screenshot. Linked requirement: FR-TAX-07.
81

What steps do you follow to plan and run a UAT cycle?

Save to ▾
Show answer
Plan: agree scope, entry and exit criteria, testers and schedule with the business owner. Prepare: write scenarios and test cases from requirements, set up the environment and test data, and brief testers. Execute: run test cases in daily sessions, log defects with evidence and hold a daily triage. Monitor: report progress, pass rate and open defects by severity. Close: check exit criteria, get the business sign-off with known issues documented, and hold a short lessons-learned review.
82

Write SQL checks to validate a customer data migration between the legacy and new systems during UAT.

Save to ▾
Show answer
-- 1. Row counts should match SELECT (SELECT COUNT(*) FROM legacy.customers) AS legacy_rows, (SELECT COUNT(*) FROM target.customers) AS target_rows; -- 2. Records missing in the target SELECT l.customer_id FROM legacy.customers l LEFT JOIN target.customers t ON t.customer_id = l.customer_id WHERE t.customer_id IS NULL; -- 3. Financial totals should reconcile SELECT SUM(outstanding_balance) FROM legacy.customers; SELECT SUM(outstanding_balance) FROM target.customers;
83

Write a SQL query to find requirements that have no linked UAT test case.

Save to ▾
Show answer
SELECT r.req_id, r.title, r.priority FROM requirements r LEFT JOIN test_case_links l ON l.req_id = r.req_id WHERE l.req_id IS NULL AND r.status = 'APPROVED' ORDER BY r.priority; -- Run this before UAT starts: every approved requirement -- should trace to at least one test case.
84

Write non-functional requirements for an online payment page.

Save to ▾
Show answer
NFR-01 Performance: the payment page loads within 2 seconds for 95 percent of requests at 500 concurrent users. NFR-02 Availability: 99.9 percent monthly uptime outside planned maintenance. NFR-03 Security: card data is never stored by the application, and all traffic uses TLS 1.2 or higher. NFR-04 Compliance: the flow meets PCI DSS and RBI payment guidelines. NFR-05 Usability: works on mobile screens from 360 pixels wide. NFR-06 Audit: every transaction attempt is logged with a timestamp.
85

Write a SQL query to calculate monthly customer churn rate for a subscription business.

Save to ▾
Show answer
WITH monthly AS ( SELECT DISTINCT customer_id, DATE_TRUNC('month', billing_date) AS month FROM subscriptions_billed ) SELECT prev.month AS month, COUNT(prev.customer_id) AS customers_at_start, COUNT(prev.customer_id) - COUNT(nxt.customer_id) AS churned, ROUND(100.0 * (COUNT(prev.customer_id) - COUNT(nxt.customer_id)) / COUNT(prev.customer_id), 2) AS churn_pct FROM monthly prev LEFT JOIN monthly nxt ON nxt.customer_id = prev.customer_id AND nxt.month = prev.month + INTERVAL '1 month' GROUP BY prev.month ORDER BY prev.month;
86

Guesstimate: how many laptops are sold in India each year?

Save to ▾
Show answer
Segment by buyer. Households: about 30 crore households, roughly 15 percent own a laptop, so 4.5 crore laptops, replaced every 5 years, gives about 90 lakh a year, plus around 20 lakh first-time student buyers. Businesses: assume 4 crore office workers using laptops, replaced every 4 years, giving 1 crore. Government and education schemes add around 10 lakh. Total is about 2.2 crore. Sanity check against industry trends and give a range of 1.5 to 2.5 crore.

Frequently asked questions

Why are practical questions important?

Most technical rounds include at least one live task. Practising the exact typing and reasoning makes you calm and fast in the real round.

How should I answer them?

Talk while you work: say your approach first, write the simplest correct version, then improve it and mention edge cases.