Catalog
8 branches of analytics, product and AI interview questions
Explore eight skill tracks, called branches, filterable by subtopic, company, tool and difficulty. SQL questions run against sample tables, choice and numeric answers are checked instantly, and written cases are scored against evaluation criteria.
Filters (1)
Branches
Subtopics
Access
Free onlyQuestion type
Type to find a company, then pick it from the list below.
Tool
20 questions
Second highest order per customer
Rank orders per customer and return each customer's second largest order.
Live SQL · Windows · PostgreSQL · 12 min · Medium
SQL & Data Modeling · Original Uplift question
Signup to purchase funnel
ProBuild a three-step funnel from an events table with conversion rates.
Live SQL · Funnels · PostgreSQL · 18 min · Hard
SQL & Data Modeling · Original Uplift question
Choosing the fact table grain
Pick the right grain for an order-line fact table.
Quick check · Modeling · dbt · 6 min · Easy
SQL & Data Modeling · Original Uplift question
Running total of daily revenue
From the orders table, return each order_date with that day's revenue and a cumulative running total of revenue through that date, ordered by date.
Live SQL · Windows · PostgreSQL · 10 min · Medium
SQL & Data Modeling · Original Uplift question
Trailing 7-day active users
ProFrom an events table, for each calendar date return the number of DISTINCT users active in the trailing 7 days (that date and the 6 days before it).
Live SQL · Windows · PostgreSQL · 15 min · Hard
SQL & Data Modeling · Original Uplift question
Month-over-month revenue growth
Return each month, its revenue, and the month-over-month growth as a percentage rounded to one decimal.
Live SQL · Windows · PostgreSQL · 10 min · Medium
SQL & Data Modeling · Original Uplift question
Top 3 products per category by revenue
Return the top 3 products by total revenue within each category.
Live SQL · Windows · PostgreSQL · 12 min · Medium
SQL & Data Modeling · Original Uplift question
Longest consecutive login streak
ProEach row is one calendar day a user logged in (no duplicates).
Live SQL · Gaps islands · PostgreSQL · 18 min · Hard
SQL & Data Modeling · Original Uplift question
Sessionize events with a 30-minute gap
ProAssign a session id to each event per user, starting a new session whenever the gap since the user's previous event exceeds 30 minutes.
Live SQL · Sessionization · PostgreSQL · 18 min · Hard
SQL & Data Modeling · Original Uplift question
Keep only the latest record per listing
The snapshots table has multiple rows per listing.
Live SQL · Deduplication · PostgreSQL · 10 min · Medium
SQL & Data Modeling · Original Uplift question
Day-7 retention by signup cohort
ProFor each signup date cohort, return the cohort size and the Day-7 retention rate: the share of users who were active exactly 7 days after signup.
Live SQL · Cohort retention · PostgreSQL · 18 min · Hard
SQL & Data Modeling · Original Uplift question
Median order value per segment
Return the median order amount for each customer segment.
Live SQL · Aggregation · PostgreSQL · 8 min · Medium
SQL & Data Modeling · Original Uplift question
Users who viewed then purchased the same item
Count the distinct users who VIEWED a product and later PURCHASED that same product (purchase time strictly after the view).
Live SQL · Self joins · PostgreSQL · 12 min · Medium
SQL & Data Modeling · Original Uplift question
Pivot monthly revenue into columns
Return one row per category with three columns of revenue: Jan, Feb, and Mar 2026.
Live SQL · Pivoting · PostgreSQL · 10 min · Medium
SQL & Data Modeling · Original Uplift question
Which change needs a Type 2 dimension
You maintain a customer dimension.
Quick check · Modeling · 6 min · Medium
SQL & Data Modeling · Original Uplift question
Longest monthly activity streak
For each user, return the length of their longest streak of consecutive calendar months with at least one activity.
Live SQL · Windows · PostgreSQL · 18 min · Medium
SQL & Data Modeling · Original Uplift question
Sessionize events with a 30-minute gap
ProCreate sessions separately for each user.
Live SQL · Funnels · PostgreSQL · 25 min · Hard
SQL & Data Modeling · Original Uplift question
Week-one retention by signup cohort
Group users by Monday-starting signup week.
Live SQL · Funnels · PostgreSQL · 20 min · Medium
SQL & Data Modeling · Original Uplift question
Join each invoice to the plan in effect
ProEach plan_history row starts a new plan period for an account and remains effective until the next change.
Live SQL · Modeling · PostgreSQL · 22 min · Hard
SQL & Data Modeling · Original Uplift question
Rolling seven-day cancellation rate
ProFor every calendar date from the first through last order date, compute the trailing seven-calendar-day cancellation rate: canceled orders divided by all orders in that date and the prior six dates.
Live SQL · Windows · PostgreSQL · 22 min · Hard
SQL & Data Modeling · Original Uplift question