SQL QuestSQL Interview Questions › Joins

Customer Recency Analysis

MediumFreeQuerying BasicsJoinsAggregation & GroupingDate Functions

Meta's Growth team builds a weekly recency report to identify lapsed users for re-engagement push notifications. For each customer who has placed at least one order, show: name, membership, last_order_date (most recent order), days_since_last_order (integer, relative to 2024-06-01), total_orders, and total_spent (2 dec). Sort by days_since_last_order descending — lapsed users first. Recency analytics is the R in RFM (Recency-Frequency-Monetary), which is table stakes for every Meta Data Scientist (Analytics) interview because it's literally the foundation of growth team thinking.

Solve it in the browser editor →

Runs on SQLite in your browser, graded against the expected result, no signup. A wrong answer gets a diagnosis, not just "incorrect".

Schema

customers

customer_idnameemailsignup_datemembershiptotal_orders
1John Smithjohn.smith@email.com2023-01-15Gold15
2Emma Wilsonemma.wilson@email.com2023-03-20Silver8
3Michael Brownmichael.brown@email.com2023-02-10Gold12

orders

order_idcustomer_idproductcategoryquantitypricetotalorder_datecountrystatus
11Laptop ProElectronics11299.991299.992024-01-15USAcompleted
22Wireless MouseElectronics249.9999.982024-01-16Canadacompleted
33Office ChairFurniture1349.99349.992024-01-17USAcompleted

Expected output: Customer recency metrics for reactivation targeting

Hint

MAX(DATE(order_date)) gives last order date. CAST(julianday('2024-06-01') - julianday(MAX(DATE(order_date))) AS INTEGER) for days

Concepts

SELECT JOIN GROUP BY Date Functions Aggregation JOIN + Date Functions

Practise the topic: SQL practice questions · JOIN practice · GROUP BY exercises · Date function practice

In these company practice sets

Airbnb · Meta · Revolut · Stripe · Tesla · Uber · Wise

A SQL Quest challenge matched to patterns reported for these companies — not a question any of them has published.

Related questions

Customers Who Never OrderedMedium · FreeAbove-Average Departments (Derived Table)Medium · FreeLEFT JOIN NULL Semantics: Inactive CustomersMedium · FreeManagement Hierarchy OverviewMedium · FreeCount Direct ReportsMedium · FreeMembership Tier Revenue AnalysisMedium · Free

Where would this cost you points in an interview?

Ten questions, no signup: a Skillmap across nine SQL skills and the one to fix first.

Take the readiness test