TGViewer
Data Engineers Data Engineers @sql_engineer · 11.2K subscribers
Post #826 993
Netflix Analytics Engineer Interview Question (SQL) 🚀
---

### Scenario Overview
Netflix wants to analyze user engagement with their platform. Imagine you have a table called netflix_data with the following columns:
- user_id: Unique identifier for each user
- subscription_plan: Type of subscription (e.g., Basic, Standard, Premium)
- genre: Genre of the content the user watched (e.g., Drama, Comedy, Action)
- timestamp: Date and time when the user watched a show
- watch_duration: Length of time (in minutes) a user spent watching
- country: User’s country

The main objective is to figure out how to get insights into user behavior, such as which genres are most popular or how watch duration varies across subscription plans.

---

### Typical Interview Question

> “Using the netflix_data table, find the top 3 genres by average watch duration in each subscription plan, and return both the genre and the average watch duration.”

This question tests your ability to:
1. Filter or group data by subscription plan.
2. Calculate average watch duration within each group.
3. Sort results to find the “top 3” within each group.
4. Handle tie situations or edge cases (e.g., if there are fewer than 3 genres).

---

### Step-by-Step Approach

1. Group and Aggregate
Use the GROUP BY clause to group by subscription_plan and genre. Then, use an aggregate function like AVG(watch_duration) to get the average watch time for each combination.

2. Rank Genres
You can utilize a window function—commonly ROW_NUMBER() or RANK()—to assign a ranking to each genre within its subscription plan, based on the average watch duration. For example:

   AVG(watch_duration) OVER (PARTITION BY subscription_plan ORDER BY AVG(watch_duration) DESC)

(Note that in many SQL dialects, you’ll need a subquery because you can’t directly apply an aggregate in the ORDER BY of a window function.)

3. Select Top 3
After ranking rows in each partition (i.e., subscription plan), pick only the top 3 by watch duration. This could look like:

   SELECT subscription_plan,
genre,
avg_watch_duration
FROM (
SELECT subscription_plan,
genre,
AVG(watch_duration) AS avg_watch_duration,
ROW_NUMBER() OVER (
PARTITION BY subscription_plan
ORDER BY AVG(watch_duration) DESC
) AS rn
FROM netflix_data
GROUP BY subscription_plan, genre
) ranked
WHERE rn <= 3;


4. Validate Results
- Make sure each subscription plan returns up to 3 genres.
- Check for potential ties. Depending on the question, you might use RANK() or DENSE_RANK() to handle ties differently.
- Confirm the data type and units for watch_duration (minutes, seconds, etc.).

---

### Key Takeaways
- Window Functions: Essential for ranking or partitioning data.
- Aggregations & Grouping: A foundational concept for Analytics Engineers.
- Data Validation: Always confirm you’re interpreting columns (like watch_duration) correctly.

By mastering these techniques, you’ll be better prepared for SQL interview questions that delve into real-world scenarios—especially at a data-driven company like Netflix.
  • ❤ 6
More from @sql_engineer
  1. Aug 29, 2026Example: Source Database → CDC → Only Changed Records → Data Platform CDC is especially us…
  2. Aug 29, 2026🚀 Data Engineering Fundamentals – Part 7 📥 Data Ingestion: How Data Enters a Data Platfo…
  3. Aug 18, 2026🚀 Data Engineering Fundamentals – Part 6 📌 ETL vs ELT: How Data Moves from Source to Des…
  4. Aug 11, 2026📊 The 90-Minutes Business Analytics Masterclass Learn how to transform raw data into powe…
  5. Aug 8, 2026Data Warehouse Stores: Cleaned sales data Customer KPIs Revenue reports Historical busines…
  6. Aug 8, 2026🚀 Data Engineering Fundamentals – Part 4 📌 Databases vs Data Warehouses vs Data Lakes vs…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →