SQL QuestSQL Interview Questions › Window Functions

Top 3 Merchants Per Category by Spend

MediumFreeQuerying BasicsWindow FunctionsJoinsAggregation & GroupingSubqueries & CTEs

Top-N per group — the window question every analyst screen keeps. For each merchant category, rank merchants by their total card spend and keep the top three. Aggregate first (one row per merchant), then rank inside a CTE with ROW_NUMBER() OVER (PARTITION BY category ORDER BY total_spend DESC, merchant_id), then filter rank_in_category <= 3 outside it — a window function cannot sit in a WHERE clause.

Return category, name (merchant name), total_spend (SUM of amount, rounded to 2 decimals), and rank_in_category. Categories with fewer than three merchants return what they have. Order by category ascending, then rank_in_category ascending.

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

transactions

txn_idaccount_idamounttxn_atmerchant_idlatlngstatus
1149151.842026-03-04T12:39:39.078Z2440.342-74.4092completed
22110.722026-03-04T13:04:50.641Z752.936613.3229completed
335158.782026-03-04T13:27:15.528Z2552.739713.3134completed

merchants

merchant_idnamecategorycountryrisk_tier
1BigBox MartGroceryTRhigh
2Quick StopElectronicsJPhigh
3Aurora CafeTravelTRhigh

Expected output: Clothing: Flux Online 1, Vespa Apparel 2, PillPath 3; Electronics: Quick Stop 1 ...

Hint

The hint for this one spells out most of the query, so it stays in the editor. Reach for SELECT, Window Functions, ROW_NUMBER, and open the hint there if you stall.

Concepts

SELECT Window Functions ROW_NUMBER PARTITION BY JOIN GROUP BY Window Functions + CTE

Practise the topic: SQL practice questions · Window function practice · JOIN practice · GROUP BY exercises · CTE practice · Ranking function practice

In these company practice sets

Capital One · Ramp

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

Related questions

Window Functions: ROW_NUMBERMedium · FreeMonth-over-Month Customer GrowthMedium · FreeRANK vs DENSE_RANK Side-by-SideMedium · FreeTop 3 Salary Tiers (DENSE_RANK)Medium · FreeMost Recent Order Per Customer (ROW_NUMBER)Medium · FreeSecond-Highest Earner Per Department (ROW_NUMBER)Medium · 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