Talentd InterviewMy ordersBuy · ₹499

2026 edition · 4 PDFs

Crack Data Analyst Interviews 2026

SQL, Excel, Power BI, Python and statistics

1,335 interview questions with worked answers, for freshers and analysts with up to 3 years of work, plus practice files to try them on.

  • 1,015 SQL questions in Crack SQL Interviews 2026, with the Top 100 PDF and the cheatsheet
  • 320 analyst questions in the Data Analyst Interview Pack: Excel, Power BI and DAX, pandas, statistics
  • Practice files: the CSVs, Power BI tables and Excel sheets the answers use

₹499one-time payment for everything

  • Instant download
  • 30-day refund before download
  • No subscription
Crack SQL Interviews 2026Data Analyst Interview PackTop 100 Most Asked SQL QuestionsSQL cheatsheet
1,015 SQL questions320 analyst questions1,335 in total4 PDFs + practice files

What you get

Four PDFs, stamped with your name, and a ZIP of practice files.

PDF · 452 pages

Data Analyst Interview Pack

320 questions in 15 chapters: Excel 120, Power BI and DAX 90, Python pandas 90, statistics 20. 155 are marked Fresher and 165 are for 1 to 3 years of work. Chapter 0 has 30 must-know questions for the night before and a 7-day plan for each level.

PDF · 1,106 pages

Crack SQL Interviews 2026

1,015 SQL questions: 495 theory and 520 scenarios on Indian business data, sorted easy to hard. Every query was run on MySQL, PostgreSQL and SQLite. 14-day and 30-day study plans.

PDF · 43 pages

Top 100 Most Asked SQL Questions

The SQL questions that come up most, with short answers, for revision in the last few days.

PDF · 7 pages

SQL cheatsheet

The order a query runs in, every join type, window functions side by side, NULL rules, and where MySQL, PostgreSQL, SQL Server, Oracle and SQLite differ.

Practice files

  • The CSV files the pandas code reads: 120 orders, 40 customers, 30 employees, website events and monthly targets
  • The four tables of the Power BI sample model (Sales, Product, Customer, Date)
  • An Excel workbook with one sheet for every question that has a table, so the cell references work as printed

Four questions from the kit

One each for SQL, Excel, DAX and pandas, copied from the books. Open the answer to see the result, the common mistake and the follow-up.

SQLSQL book · Chapter 2 · Q.115 · Medium

The anti-join that quietly returns nothing

Swiggy's partner team wants the restaurants that have never had a delivered order, so they can call the owners. A restaurant with only cancelled or pending orders, or with no orders at all, belongs on the list.

See the answer
SELECT r.restaurant_id, r.restaurant_name, r.city
FROM swiggy_restaurants r
LEFT JOIN swiggy_orders o
  ON o.restaurant_id = r.restaurant_id
 AND o.delivery_status = 'delivered'
WHERE o.order_id IS NULL
ORDER BY r.restaurant_id;

Output (from running the query)

restaurant_idrestaurant_namecity
4Paranthe Wali GaliDelhi
5Chai PointHyderabad

Key insight

In an anti-join, every condition that defines "a matching row" goes in the ON clause, and WHERE only checks that no match was found (a right-hand key IS NULL).

Common mistake

Moving the status filter into WHERE: WHERE o.delivery_status = 'delivered' AND o.order_id IS NULL can never be true, so the query returns nothing. Dropping the status filter altogether is the other wrong version: it finds Chai Point (no orders) but misses Paranthe Wali Gali, whose single cancelled order counts as a match.

ExcelPack · Chapter 1 · Q 1.1 · Fresher

VLOOKUP finds an invoice that doesn't exist

Invoice 1006 is not in this list, yet =VLOOKUP(1006,A2:B7,2) returns an amount instead of an error. What is going on?

AB
1InvoiceAmount (₹)
2100112,500
310028,400
4100415,250
510059,900
6100722,000
710086,750
See the answer
=VLOOKUP(1006,A2:B7,2)

Result (calculated by a formula engine on this table)

9,900

It returns ₹9,900, the amount of invoice 1005. When you leave out the last argument, VLOOKUP uses TRUE, an approximate match, and takes the nearest smaller invoice number. Type FALSE as the fourth argument and the same lookup returns #N/A.

Common mistake

Checking only that the formula returns a number. A wrong amount looks as normal as a right one, so test with a code you know is not in the list.

Likely follow-up

When does the default TRUE give a correct answer on an ID column? Only when the ID exists and the column is sorted ascending. Then it lands on the right row, but you have gained nothing over FALSE. On an unsorted column it can return a wrong row even for an ID that exists, so the default is never a safe choice for IDs.

Power BI (DAX)Pack · Chapter 8 · Q 8.8 · Fresher

One measure shows South's sales on every row

A colleague writes South Sales = CALCULATE([Total Sales], Customer[Region] = "South") and puts it next to Total Sales in a table with Region on the rows. What does the North row show in the South Sales column, and is the measure broken?

Model: Sales (CustomerKey, Amount) · Customer (CustomerKey, Region)

See the answer
Total Sales = SUM ( Sales[Amount] )

South Sales =
CALCULATE ( [Total Sales], Customer[Region] = "South" )

Result on the sample model (checked by recomputing it in pandas; the DAX was not run)

₹5,61,530.20

₹5,61,530.20, South's total, and the same on every row. The measure works as written: a CALCULATE filter on a column replaces any filter already on that column, so the North row's Region = North is overwritten by Region = South.

Common mistake

Calling the measure broken: a filter argument in CALCULATE replaces the row's filter on the same column, so South's figure on every row is what CALCULATE is defined to do.

Likely follow-up

How would you write sales for South and West together in one measure? CALCULATE([Total Sales], Customer[Region] IN {"South", "West"}), or Customer[Region] = "South" || Customer[Region] = "West" as a single argument. Two separate arguments, Customer[Region] = "South", Customer[Region] = "West", are combined with AND, and no customer is in both regions, so that version returns blank.

Python (pandas)Pack · Chapter 12 · Q 12.11 · 1-3 yrs

A merge that adds rows and inflates revenue

After a customer export was appended twice for one customer, your orders to customers merge returns more rows than orders and revenue per customer looks inflated. Show what happens and the fix.

See the answer
import pandas as pd

orders = pd.read_csv("data/orders.csv").drop_duplicates()
customers = pd.read_csv("data/customers.csv")
customers = pd.concat([customers, customers[customers["customer_id"] == "C015"]])
print(len(orders), customers["customer_id"].duplicated().sum())

m = orders.merge(customers, on="customer_id", how="left")
print(len(m))
print((orders["customer_id"] == "C015").sum(), (m["customer_id"] == "C015").sum())
try:
    orders.merge(customers, on="customer_id", validate="many_to_one")
except pd.errors.MergeError:
    print("MergeError")
fixed = orders.merge(customers.drop_duplicates("customer_id"), on="customer_id",
                     how="left", validate="many_to_one")
print(len(fixed))

Output (from running the code)

120 1
124
4 8
MergeError
120

A merge repeats a left row once for every match on the right. Customer C015 appears twice in customers, so each of C015's 4 orders comes out twice and 120 orders become 124 rows. validate="many_to_one" raises a MergeError straight away, and drop_duplicates("customer_id") on the customers table brings the count back to 120.

Common mistake

Fixing it with drop_duplicates() on the merged result: the rows are not exact copies once the customer columns differ, and the damage should be fixed before the merge, not after.

Likely follow-up

The two C015 rows differ: one says Delhi, one says Jaipur. What do you do? Don't drop either blindly. Check which row is newer or which one the source system treats as current, for example by signup date or a last-updated column, keep that one and tell the data owner. Dropping the first row is a guess.

The Data Analyst Interview Pack, chapter by chapter

320 questions in 15 chapters, after a short chapter 0 on how to use it. SQL has its own book, which comes with this kit.

120

Excel

  • Lookups22
  • Formulas that come up every time24
  • Conditional sums, counts and dynamic arrays22
  • Pivot tables18
  • Cleaning, validation and what-if20
  • Excel case tasks14

90

Power BI and DAX

  • Data modelling18
  • DAX core26
  • DAX patterns20
  • Power Query, the Service and performance26

90

Python and pandas

  • pandas basics24
  • Grouping, joining, reshaping28
  • Cleaning and time series24
  • pandas case tasks14

20

Statistics

  • Statistics for analysts20

Each question has a short answer, the formula or code with its result, an explanation, the common mistake, a spoken answer and the likely follow-up.

How the answers were checked

No result in the kit was typed by hand.

SQL

Every one of the 1,015 queries was run on MySQL 8.4, PostgreSQL 17 and SQLite, and the result tables come from those runs.

Excel

Results were calculated by a formula engine on the question's own table, and every printed formula was then re-run in Microsoft Excel.

pandas

Every snippet was run, and the output printed under it is what it printed.

DAX

DAX can't run outside Power BI, so each result was recomputed in pandas on the same model and each measure checked against Microsoft's DAX docs. The book labels these results that way.

Is it for you?

A good fit if

  • You have data analyst, business analyst or MIS interviews coming up, as a fresher or with up to 3 years of work
  • Your rounds test Excel or Power BI as well as SQL
  • You want to try each formula and snippet on the same data before you read the answer

Not the right kit if

  • Your interviews test only SQL. The SQL Interview Kit on its own is enough
  • You want video lessons. These are PDFs you work through
  • You want machine learning or data science questions. The statistics chapter covers what analyst rounds ask, not ML

Data Analyst Interview Kit

  • Data Analyst Interview Pack (320 questions, 452 pages)
  • Crack SQL Interviews 2026 (1,015 questions, 1,106 pages)
  • Top 100 Most Asked SQL Questions (43 pages)
  • SQL cheatsheet (7 pages)
  • Practice files: CSVs, Power BI tables, an Excel workbook
  • New versions of the PDFs free

₹499one-time payment

UPI, card or net banking on a secure payment page. No account needed.

Refund

Email support@talentd.in within 30 days of buying with your order number, before you download any file (the book or a bonus), and we refund the full amount to your original payment method. Download access for that order ends with the refund.

Questions buyers ask

How do I get the files after paying?

Download buttons for all four PDFs appear straight away, and we email you the same links. No account needed. The practice files link is in chapter 0 of the Data Analyst Interview Pack.

How does the 30-day refund work?

Email support@talentd.in within 30 days of buying with your order number, before you download any file (the book or a bonus). We refund the full amount to your original payment method; download access for that order ends with the refund.

I already have the SQL kit. What's different?

This kit has the same three SQL files as the SQL Interview Kit, plus the Data Analyst Interview Pack and its practice files. If you already own the SQL kit, the new part for you is the pack.

Which Excel version do I need?

Most answers work in any recent Excel. Where a function needs Excel 2021 or Microsoft 365, such as XLOOKUP or FILTER, the question says so, and often gives the version for older Excel too.

Do I need Python installed?

Only for the pandas chapters, if you want to run the code. Any Python with pandas works, or Jupyter. Unzip the practice files and start Python in that folder so pd.read_csv("data/orders.csv") finds the file.

Can I read it on my phone?

Yes. They are A4 PDFs with clickable contents and question links. They open on any phone, tablet or laptop; long code and tables are easier on a bigger screen.

I already bought it. Where are my files?

Open My orders (analystprep.talentd.in/my-orders) and enter the email you paid with. We email you fresh download links straight away. Your purchase has lifetime access, so this works any time.

Is it a one-time payment?

Yes. Pay once by UPI, card or net banking. No subscription, no auto-renewal.

Can I share my copy?

No. Every page carries your name, email and order number, so a shared copy can be traced to its buyer. We cancel access for that order.

Who wrote it?

Azhar Khan, founder of Talentd (talentd.in).