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
ExperiencesCoaching
New
Practice
Mock InterviewsTimed interview simulations with feedbackSuccess 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
Get started
SQL Top Stores vs District
00:00
5 left

SQL Top Stores vs District

HardSQL · PostgreSQL

Problem

Write a SQL query to identify the top-performing Walgreens Boots Alliance stores by monthly sales and compare each store's sales to its district average. Return the top-ranked store or tied stores for every district and calendar month. Include stores with no sales in a month when calculating district averages.

Output

  1. One row per top-ranked store, district, and month
  2. Columns: month_start, district_name, store_id, store_name, monthly_sales, district_average, and sales_vs_district_avg_pct
  3. Include ties, calculate the percentage difference from the district average, and order by month, district, and store ID

Output details

  • Use only distinct calendar months represented by sale_date.
  • Treat stores with no monthly sales as 0.
  • Round district_average to 2 decimal places before calculating the percentage difference.
  • Round sales_vs_district_avg_pct to 2 decimal places.
  • Return 0.00 for sales_vs_district_avg_pct when district_average is zero.
  • Sort month_start, district_name, and store_id ascending.

Schema

districts
ColumnTypeDescription
district_idPKINTUnique district identifier
district_nameVARCHAR(100)District name
regionVARCHAR(50)Geographic region containing the district
stores
ColumnTypeDescription
store_idPKINTUnique store identifier
store_nameVARCHAR(120)Walgreens Boots Alliance store name
district_idINTDistrict assigned to the store
store_sales
ColumnTypeDescription
sale_idPKINTUnique sales record identifier
store_idINTStore associated with the sales record
sale_dateDATEDate of the sale
amountNUMERIC(12,2)Sales amount for the record
Tablesdistrictsstoresstore_sales
Interviewer

Whenever you're ready, walk me through your approach or go straight to the code. The requirements and the three tables are in the Question tab.

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.