Dataford
Interview QuestionsInterview GuidesExperiencesCoaching
New
Pricing
Get started
Dataford
Popular roles
Software EngineerData AnalystData ScientistData EngineerBusiness AnalystAI EngineerMachine Learning EngineerProduct Manager
Browse
Browse All RolesEvery role hub, from analyst to MLBrowse All CompaniesCompany-specific interview loopsAll Interview GuidesThe full guide library
Top questions by role
Software EngineerData AnalystData ScientistData EngineerBusiness AnalystAI EngineerMachine Learning EngineerProduct Manager
Top questions by skill
SQLPythonStatisticsMachine LearningA/B TestingSystem DesignGenerative AIProduct SenseMetricsBehavioral
Browse all questions →Try a mock interview
Experiences
Practice
Mock InterviewsTimed interview simulations with feedbackCoaching1:1 coaching with people at your target companiesSuccess PathYour 6-week structured planModulesCurated lessons by topicWebinarsTalks from ex-Big Tech data leadsPlaygroundA free-form scratch editor
Learn
BlogInterview strategy and career adviceTech Job Market ReportHiring trends across data and AI rolesFor UniversitiesDataford for career centersAbout DatafordWho we are and how we build
Pricing
Build my plan
SQL for Top Buyers
00:00
5 left

SQL for Top Buyers

MediumSQL · PostgreSQL

Problem

Etsy wants to identify its most active buyers using recent purchase activity. Write a SQL query to find the top 10% of active buyers based on purchase frequency during the previous 90 days, including their spending and most frequently purchased product category.

Output

  1. Return one row per buyer in the top 10% of active buyers during the 90-day period ending on September 15, 2026.
  2. Include buyer_id, purchase_frequency, total_spend, and primary_category.
  3. Define primary_category as the category with the most purchases by that buyer. Break category ties alphabetically, placing a NULL category last.
  4. Rank buyers by purchase frequency descending, total spend descending, and buyer ID ascending. Return the top decile, rounded up to at least one buyer.
  5. Sort the final result using the same buyer-ranking order.

Schema

buyers
ColumnTypeDescription
buyer_idPKINTUnique Etsy buyer identifier
buyer_nameVARCHAR(100)Buyer display name
emailVARCHAR(255)Buyer email address
purchases
ColumnTypeDescription
purchase_idPKINTUnique purchase identifier
buyer_idINTBuyer who made the purchase
product_idINTPurchased listing identifier
purchased_atTIMESTAMPTimestamp when the purchase was made
amountDECIMAL(10,2)Purchase amount in dollars
products
ColumnTypeDescription
product_idPKINTUnique listing identifier
product_nameVARCHAR(150)Etsy listing name
categoryVARCHAR(80)Product category
Tablesbuyerspurchasesproducts
Interviewer

Your question is SQL for Top Buyers. Start with the requirements and the three tables in the Question tab.

Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.

You need to log in / sign up to run or submit.
CodePostgreSQL
Sign up free to run your codeLog inLn 1
Run your query to see results here.