Skip to content

SAP Data Analytics Interview Questions & Answers

Curated interview practice questions with answers. These are practice scenarios, not a verified list of past interview questions.

About SAP hiring for Data Analytics roles

SAP is a German enterprise software company known for ERP systems like SAP S/4HANA, along with analytics, cloud and business AI products. SAP Labs India in Bengaluru and Gurugram is one of its largest development centres. It hires for software developers, quality engineers, data engineers and analytics roles.

For Data Analytics roles, this SAP practice set focuses most on SQL (7), Python for Analysis (6), Web & Marketing Analytics (5), Dashboards and KPIs (4). It has 2 easy, 24 medium, 14 hard questions, so you can start easy and work up to the harder ones.

Company type
Product
Headquarters
Walldorf, Germany
Main India offices
Bengaluru, Gurugram, Pune, Mumbai

SAP Data Analytics interview process

  1. Online assessment (aptitude + coding)
  2. Technical round 1
  3. Technical round 2
  4. Managerial round
  5. HR round

Typical pattern based on public candidate experiences. Rounds vary by role, team and year.

Solved for SAPStart 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 remove duplicates in Excel but keep the latest record?

SAPExcelMedium
Save to ▾
Show answer
Sort by date (newest first), then Data → Remove Duplicates on the key column — Excel keeps the first occurrence. Or use UNIQUE / a COUNTIFS helper column.
02

Estimate how many cups of tea are sold in a city of 1 crore people in a day.

Save to ▾
Show answer
State assumptions clearly. Of 1 crore people, assume 70 percent drink tea, so 70 lakh. Say half of their cups are bought outside, at an average of one bought cup per drinker every day for that half, giving about 35 lakh purchased cups, with more at offices and stations. So roughly 30 to 40 lakh cups. Interviewers judge the structure, segmentation and sanity check more than the exact number.
03

How do you handle outliers in Pandas?

Save to ▾
Show answer
Detect with IQR or z-score, then cap with clip, remove, transform with log, or keep and flag them depending on whether they are errors or real events.
04

Your sales data contains negative quantities. What do you do with them?

Save to ▾
Show answer
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.
05

How do you let users choose Top N customers with a parameter in Tableau?

Save to ▾
Show answer
Create an integer parameter Top N with a range of 5 to 50 and show its control. Drag Customer to the Filters shelf, choose the Top tab, select By field, and set it to top Top N by SUM(Sales). Alternatively create a set based on the parameter so you can show Top N versus Others in one chart. If the Top N must respect a category filter, add that category filter to context.
06

What is a self join and when is it used?

SAPSQLMedium
Save to ▾
Show answer
Joining a table to itself with aliases, useful for hierarchies such as employees and managers or comparing rows within the same table.
07

How do you handle large CSV files that do not fit in memory in Python?

Save to ▾
Show answer
Read in chunks with chunksize, load only needed columns, set efficient dtypes or switch to Dask, Polars or a database.
08

How do you make a dashboard accessible, for example for colour-blind users?

Save to ▾
Show answer
Avoid red-green as the only difference; use colour-blind-safe palettes such as blue and orange, and add icons, labels or patterns so meaning never depends on colour alone. Ensure enough contrast between text and background, use readable font sizes, and add alt text to visuals. Keep a logical tab order for keyboard users, and offer a table view of chart data. Accessible dashboards are usually clearer for everyone.
09

The finance dashboard and the sales dashboard show different revenue for last month. How do you resolve it?

Save to ▾
Show answer
Start by listing both definitions: gross or net of returns and discounts, with or without tax, booking date or invoice date, and which entities are included. Compare at a detailed level for one region to find exactly where the difference arises. Usually both are correct for their purpose. Agree with both owners which is the official revenue KPI, rename the other clearly, such as booked sales, and document it in the metric dictionary.
10

When would you choose Polars or DuckDB over pandas?

Save to ▾
Show answer
Choose them when data is large, roughly several gigabytes, or when pandas is slow or runs out of memory. DuckDB runs fast SQL directly on CSV and Parquet files on a laptop, ideal for analysts comfortable with SQL. Polars is a DataFrame library with lazy evaluation and multi-threading, often many times faster than pandas. pandas still wins for small data, its huge ecosystem and compatibility with most tutorials and libraries.
11

Your 50/50 test has 52,400 users in control and 47,600 in treatment. What does this tell you?

Save to ▾
Show answer
This is a sample ratio mismatch. A chi-square test on these counts gives a tiny p-value, so the gap is not chance. Something is filtering users unevenly, such as the treatment page crashing on some devices, a redirect losing tracking, bots in one arm or a bug in assignment. The results cannot be trusted until the cause is found. Check splits by browser, platform and day to locate it.
12

What is a date table in Power BI and why should you mark it as one?

Save to ▾
Show answer
A date table has one row per day with no gaps, covering the full range of your data, plus columns like year, month, quarter and week. Marking it as a date table tells Power BI to use it for time intelligence functions such as TOTALYTD and SAMEPERIODLASTYEAR. Without it, those functions can give wrong results and auto date tables bloat the model. Relate it to every fact table's date column.
13

How do you optimise a slow SQL query?

Save to ▾
Show answer
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.
14

Why would you publish a Tableau data source separately instead of embedding it in each workbook?

Save to ▾
Show answer
A published data source lives on Tableau Server or Cloud and can be reused by many workbooks. Calculations, joins, field names and extract refresh schedules are defined once, so every report uses the same revenue logic and the database is queried once per refresh instead of once per workbook. You can certify it and set permissions. Embedded sources are fine for a quick personal analysis but drift over time.
15

Brand keyword ads show a ROAS of 15, and the team wants to double the budget. How do you respond?

Save to ▾
Show answer
Brand search ROAS is usually inflated because people searching the brand name were already looking for you and would often click the free organic result anyway. Before increasing spend, I would propose an incrementality test, such as pausing brand ads in some matched cities or time periods and measuring the drop in total brand-search orders. The incremental ROAS is often far lower, so the extra budget may work better elsewhere.
16

Many reporting queries in your team use SELECT DISTINCT to remove duplicate rows. What is the risk?

SAPSQLMedium
Save to ▾
Show answer
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.
17

How do you calculate a simple customer lifetime value?

Save to ▾
Show answer
A simple formula is CLV = average order value x purchase frequency per year x gross margin x expected lifetime in years. Example: 800 rupees x 6 orders x 30 percent margin x 3 years = 4,320 rupees. Expected lifetime can be estimated as 1 divided by annual churn rate. A better version discounts future value and calculates CLV by cohort or segment, because averages hide very different customer groups.
18

What are additive, semi-additive and non-additive facts?

Save to ▾
Show answer
Additive facts, like sales amount or quantity, can be summed across every dimension. Semi-additive facts, like account balance or stock on hand, can be summed across accounts or stores but not across time; for time you take the closing or average value. Non-additive facts, like percentages, ratios or unit prices, cannot be summed at all, so you store their components (profit and revenue) and calculate the ratio at query time.
19

Explain INDEX and MATCH together.

SAPExcelMedium
Save to ▾
Show answer
MATCH finds the position of a value in a range and INDEX returns the item at that position, giving a flexible lookup that works left or right and survives column insertions.
20

What are the main dimensions of data quality?

Save to ▾
Show answer
Common dimensions are accuracy, values reflect reality; completeness, required fields are present; consistency, the same fact matches across systems; validity, values follow formats and rules such as a 6-digit pin code; uniqueness, no unwanted duplicates; and timeliness, data is fresh enough for its use. Measuring these with simple checks, like percent missing or duplicate rate, turns vague complaints about bad data into fixable issues.
21

An A/B test is flat overall but significant for mobile users in Tier 2 cities. Do you ship it only for that segment?

Save to ▾
Show answer
Not straight away. Slicing results into many segments makes a chance finding likely, so this is a hypothesis, not a conclusion. Check whether the segment was planned in advance, how many segments were examined, and whether there is a plausible reason, such as slower networks benefiting from a lighter page. If it still looks promising, run a follow-up test targeted at that segment with enough sample to confirm it.
22

Leadership wants a single revenue number for next quarter, but your forecast is uncertain. How do you present it?

Save to ▾
Show answer
Show ranges, not just a single number: a forecast line with a shaded prediction interval, or a statement like revenue will likely be between 48 and 55 crore, most likely 51. Explain the main assumptions and what would change the outcome, perhaps with best, base and worst scenarios. Use plain words such as likely or unlikely consistently. Hiding uncertainty makes a forecast look precise but leads to bad decisions when reality differs.
23

Write SQL to incrementally load new and changed products into a dimension using MERGE.

Save to ▾
Show answer
MERGE INTO dim_product t USING stg_product s ON t.product_id = s.product_id WHEN MATCHED AND (t.name <> s.name OR t.category <> s.category) THEN UPDATE SET name = s.name, category = s.category, updated_at = CURRENT_TIMESTAMP WHEN NOT MATCHED THEN INSERT (product_id, name, category, updated_at) VALUES (s.product_id, s.name, s.category, CURRENT_TIMESTAMP);
24

The CMO asks which marketing channel should lose 20% of its budget. How do you approach it?

Save to ▾
Show answer
I would compare channels on incremental return, not last-click ROAS. Gather spend, attributed conversions under two models, customer quality such as repeat rate and margin, and any lift test or mix model results. Look at diminishing returns: the last rupee in a saturated channel is worth less than the average. Then recommend cutting where marginal return is lowest, ideally phased with a holdout to confirm the impact.
25

Write SQL to find the median order value overall and per city.

SAPSQLMedium
Save to ▾
Show answer
-- Works in PostgreSQL, Snowflake, SQL Server (with OVER for SQL Server) SELECT city, PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY order_value) AS median_value, AVG(order_value) AS mean_value FROM orders GROUP BY city ORDER BY median_value DESC;
26

How would you automate a weekly report with Python?

Save to ▾
Show answer
Pull data with SQL or APIs, clean and aggregate with Pandas, build charts and an Excel or PDF output, and schedule it with cron or Airflow with logging and alerts.
27

Which KPIs would you track for an e-commerce app?

Save to ▾
Show answer
DAU/MAU, conversion rate, average order value, cart abandonment, retention/churn, CAC, LTV, return rate and NPS.
28

Write pandas code to convert daily sales into weekly totals, showing zero for days with no sales.

Save to ▾
Show answer
df['date'] = pd.to_datetime(df['date']) daily = (df.groupby('date')['sales'].sum() .asfreq('D', fill_value=0)) # adds missing days as 0 weekly = daily.resample('W-MON', label='left', closed='left').sum() print(weekly.head()) # W-MON with label/closed left gives weeks starting on Monday
29

Write a Tableau calculated field that keeps only sales from the last 30 days.

Save to ▾
Show answer
// Calculated field: Last 30 Days Flag DATEDIFF('day', [Order Date], TODAY()) <= 29 AND [Order Date] <= TODAY() // Put this field on Filters and keep True. // For a sales measure instead of a filter: // IF DATEDIFF('day', [Order Date], TODAY()) <= 29 THEN [Sales] END
30

Analytics shows 1,820 purchases last month but the order database shows 2,150. Which is right, and how do you explain the gap?

Save to ▾
Show answer
The order database is the source of truth for counts and revenue. Analytics usually undercounts because of ad blockers, declined cookie consent, users closing the page before the confirmation tag fires, and payment redirects that break sessions. It can also overcount from duplicate tags on page refresh. Quantify the gap per month; if it is stable around 15%, use analytics for channel mix and trends and the database for totals.
31

How would you calculate retention using SQL?

Save to ▾
Show answer
Find each user's first activity date as a cohort, join to later activity, and compute the share of each cohort active in day, week or month N.
32

Your event logs store timestamps in UTC, but the business reports daily sales in IST, and late-night orders land on the wrong day. How do you fix it?

Save to ▾
Show answer
Convert timestamps to the business time zone before deriving the date. IST is UTC plus 5 hours 30 minutes, so an order at 20:00 UTC belongs to the next day in IST. In SQL use AT TIME ZONE or CONVERT_TZ, and in pandas use tz_localize('UTC') followed by tz_convert('Asia/Kolkata'). Store raw UTC, add a local date column in the model, and document which one each report uses.
33

Email open rates suddenly jumped from 22% to 45% without any campaign change. Should you celebrate?

Save to ▾
Show answer
No. Privacy features in some mail apps pre-load email images, which fires the open tracking pixel even if the person never reads the email, so open rates get inflated. Check opens by email client to confirm. Move reporting towards clicks, click-to-send rate, conversions and unsubscribes, which reflect real behaviour, and avoid using opens alone to pick winning subject lines or to define engaged subscribers.
34

Write SQL to calculate sessions, orders and conversion rate by traffic source.

Save to ▾
Show answer
SELECT s.traffic_source, COUNT(*) AS sessions, COUNT(o.order_id) AS orders, ROUND(100.0 * COUNT(o.order_id) / COUNT(*), 2) AS conversion_pct FROM sessions s LEFT JOIN orders o ON o.session_id = s.session_id GROUP BY s.traffic_source ORDER BY sessions DESC; -- assumes at most one order per session; otherwise use COUNT(DISTINCT o.session_id)
35

What is Simpson's paradox? Give an example.

Save to ▾
Show answer
Simpson's paradox happens when a trend in several groups reverses when the groups are combined, because group sizes differ. Example: a new sales process has higher conversion in both small and large stores, yet overall conversion looks lower because it was mostly rolled out to large stores, which convert worse in general. The lesson is to check segments and confounding variables before concluding from aggregate numbers.
36

How do you find duplicate rows in a table?

SAPSQLMedium
Save to ▾
Show answer
SELECT col, COUNT(*) FROM t GROUP BY col HAVING COUNT(*) > 1; use ROW_NUMBER() partitioned by the key to delete extras.
37

Write pandas code for a pivot table of sales by region and category with sum and count.

Save to ▾
Show answer
import pandas as pd summary = pd.pivot_table( df, index='region', columns='category', values='sales', aggfunc=['sum', 'count'], fill_value=0, margins=True # adds an All row and column ) print(summary)
38

Tell me about a time you retired or consolidated reports that nobody used.

Save to ▾
Show answer
Situation: our team maintained over 60 scheduled reports and spent two days a month fixing them. Task: reduce the load without upsetting users. Action: I checked usage logs, listed reports not opened in 90 days, contacted owners and merged overlapping ones into four dashboards with filters. I archived the rest with a 30-day notice. Result: we retired 38 reports, only two were requested back, and maintenance time halved.
39

Your analysis shows that a flagship initiative championed by leadership is not working. How do you present it?

Save to ▾
Show answer
Prepare carefully and stay factual. Share the finding early with the initiative owner privately so they are not surprised in a big meeting. Lead with the question asked, the method and the evidence, acknowledge limitations and what is working, and avoid blaming anyone. Offer options, such as fixing a specific step, narrowing the scope or stopping, with estimated impact. Bad news delivered with solutions is received far better.
40

What is the logical order in which SQL executes a SELECT query?

SAPSQLMedium
Save to ▾
Show answer
Although written as SELECT first, a query is logically processed as FROM and JOIN, then WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY and finally LIMIT. This explains common errors: you cannot use a SELECT alias in WHERE because SELECT runs later, but you can use it in ORDER BY. It also explains why aggregates belong in HAVING, not WHERE, and why window functions cannot be filtered in the same query level.

Tips to crack the SAP Data Analytics interview

  • Learn basic ERP concepts and what SAP S/4HANA, SAP BTP and SAP Analytics Cloud are used for.
  • Revise DSA, OOP and DBMS fundamentals, as SAP Labs technical interviews commonly test these core computer science topics.
  • Read about SAP's move to cloud and business AI, which shapes many current product roles.
  • 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; SAP interviewers usually ask follow-ups on your first answer.

Frequently asked questions

How many rounds are there in the SAP Data Analytics interview?

Candidates usually go through 5 stages: Online assessment (aptitude + coding); Technical round 1; Technical round 2; Managerial round; HR 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 SAP Data Analytics interview?

This practice set leans on SQL (7), Python for Analysis (6), Web & Marketing Analytics (5), Dashboards and KPIs (4). Revise those first, then practise explaining one or two of your own projects end to end, because most SAP interviewers ask you to walk through real work.

Are these the exact questions asked at SAP?

No. These are curated practice questions that match the skills and difficulty usually tested in product interviews like SAP's. They are not a leaked or verified list of past questions.

Where does SAP hire Data Analytics professionals in India?

SAP has large teams in Bengaluru, Gurugram, Pune, Mumbai. Openings and locations change often, so check the SAP careers page and filter by city and experience.

Data Analytics questions for similar companies