Independent Company Challenges
Netflix-style SQL challenges
Independent Netflix-style streaming, subscription, catalog, ratings, and engagement SQL practice.
These independent exercises use Netflix-relevant business domains; they are not claimed to be questions used by Netflix, and this site is not affiliated with the company.
- Exercises
- 25
- Difficulty
- Beginner to Hard
What this collection tests
Skills and query patterns
Streaming engagement, content performance, subscriptions, ratings, lifecycle segments, and recommendations
Curated exercises
Choose a challenge
Work in the live editor where supported. Advanced guided labs state their engine boundary before you open the workspace.
- Challenge 1Beginner
User Directory
Return all users showing user_id, country, and signup_date, ordered by user_id.
- Date analysis
- Sorting
SQLite live
Open challenge → - Challenge 2Beginner
Premium Subscribers
Return user_id, plan, and monthly_fee for every subscriber on the Premium plan, ordered by user_id.
- Filtering
- Sorting
SQLite live
Open challenge → - Challenge 3Beginner
Content Catalog
Return title and genre for all movies, ordered alphabetically by title.
- Sorting
SQLite live
Open challenge → - Challenge 4Beginner
India Signups
Return user_id and signup_date for users in India (country = 'IN'), ordered by user_id.
- Filtering
- Sorting
SQLite live
Open challenge → - Challenge 5Beginner
Crime Genre Titles
Return the title of every movie in the Crime genre, ordered alphabetically.
- Filtering
- Sorting
SQLite live
Open challenge → - Challenge 6Easy
Subscribers per Plan
Return plan and the number of subscribers on each plan, ordered by subscriber_count descending.
- Aggregation
- Sorting
SQLite live
Open challenge → - Challenge 7Easy
User Subscription Details
Return user_id, country, plan, and monthly_fee for every user, ordered by user_id.
- Joins
- Sorting
SQLite live
Open challenge → - Challenge 8Easy
Recent Content Releases
Return title and release_year for movies released after 2016, ordered by release_year then title.
- Filtering
- Sorting
SQLite live
Open challenge → - Challenge 9Easy
Total Watch Time per User
Return user_id and total_minutes (sum of watch_minutes) for each user who has watched content, ordered by total_minutes descending.
- Aggregation
- Filtering
- Sorting
SQLite live
Open challenge → - Challenge 10Easy
Unique Viewers per Title
Return movie_id and viewer_count (distinct users) for each movie, ordered by viewer_count descending then movie_id ascending.
- Joins
- Aggregation
- Sorting
SQLite live
Open challenge → - Challenge 11Medium
Average Rating per Title
Return title and avg_rating (rounded to 2 decimal places) for each movie, ordered by avg_rating descending.
- Joins
- Aggregation
- Numeric functions
SQLite live
Open challenge → - Challenge 12Medium
Revenue by Plan
Return plan and total_revenue (sum of monthly_fee) per plan, ordered by total_revenue descending.
- Aggregation
- Sorting
SQLite live
Open challenge → - Challenge 13Medium
Watch Time by Country
Return user_id, country, and total_minutes for each user who has watched content, ordered by total_minutes descending.
- Joins
- Aggregation
- Sorting
SQLite live
Open challenge → - Challenge 14Medium
Sci-Fi Viewers
Return distinct user_id values for all users who have watched at least one Sci-Fi movie, ordered by user_id.
- Joins
- Filtering
- Sorting
SQLite live
Open challenge → - Challenge 15Medium
Movies per Genre
Return genre and movie_count for each genre, ordered by movie_count descending then genre alphabetically.
- Aggregation
- Sorting
SQLite live
Open challenge → - Challenge 16Medium
Subscribed but Never Watched
Return user_id, country, and plan for subscribers who have no entries in watch_history, ordered by user_id.
- Joins
- Subqueries
- Filtering
SQLite live
Open challenge → - Challenge 17Hard
Above-Average Viewers
Return user_id and total_minutes for users whose total watch time is above the average total watch time per user, ordered by total_minutes descending.
- Joins
- Subqueries
- Aggregation
SQLite live
Open challenge → - Challenge 18Hard
Content Performance Summary
Return movie_id, title, genre, total_watch_minutes, and avg_rating for each movie that has both watch history and ratings, ordered by total_watch_minutes descending.
- Joins
- Subqueries
- Aggregation
SQLite live
Open challenge → - Challenge 19Hard
Top Country per Genre
Return genre, country, and watch_count (number of sessions) for the top country in each genre, ordered by genre.
- Window functions
- Joins
- Subqueries
SQLite live
Open challenge → - Challenge 20Hard
Plan Revenue Summary
Return plan, subscriber_count, revenue, and revenue_per_subscriber for each plan, ordered by revenue descending.
- Subqueries
- Aggregation
- Numeric functions
SQLite live
Open challenge → - Challenge 21Hard
Watch vs Rate Activity
Return user_id, movies_watched, and movies_rated for every user who has watched content. Use 0 for users who watched but never rated.
- Joins
- Subqueries
- Aggregation
SQLite live
Open challenge → - Challenge 22Hard
Top Country by Revenue
Return country, total_revenue, and subscriber_count for the single country with the highest total subscription revenue.
- Window functions
- Joins
- Subqueries
SQLite live
Open challenge → - Challenge 23Hard
User Engagement Tiers
Return user_id, movies_watched, and engagement_tier ('Low', 'Medium', or 'High') for all watching users using NTILE(3) over movies watched. Order by movies_watched descending, then user_id ascending.
- Window functions
- Subqueries
- Aggregation
SQLite live
Open challenge → - Challenge 24Hard
Top Genre per Plan
Return plan, top_genre, and watch_count for the most-watched genre within each subscription plan, ordered by plan.
- Window functions
- Joins
- Subqueries
SQLite live
Open challenge → - Challenge 25Hard
Monthly Signup Trend
Return month (YYYY-MM), new_users signed up that month, and cumulative_users (running total) ordered by month ascending.
- Window functions
- Subqueries
- Aggregation
SQLite live
Open challenge →
Attempt
Write a query or design from the brief before opening any hints.
Validate
Run it against the included dataset and inspect the output.
Explain
Compare the verified answer and explain each choice aloud.
Learn before practicing Netflix
Strengthen your understanding with these targeted learning topics:
Continue practicing
Explore related company challenges
Google
Independent Google-style search, advertising, user-engagement, and video-product SQL practice.
Meta
Independent Meta-style social-product, engagement, content, community, messaging, and advertising SQL practice.
Airbnb
Independent Airbnb-style marketplace, booking, listing, payment, review, and guest analytics SQL practice.
Return to the complete interview preparation experience.