All problems

The Account Leaderboard

hardSQLWindow FunctionsJoinsNULLs

Loopwire's customer-success team works a tiered service model, and the tier a customer sits in is decided by a leaderboard of what they pay. MRR — monthly recurring revenue — is what a live contract bills each month, and a customer paying for two things at once is worth both together. The team's one firm rule is that customers paying the same amount must be given the same position: whoever is drawing up the list does not get to break a tie by preference.

subscriptions — one row per contract. account_id points at a row in accounts. plan is the tier the customer bought. mrr is what that contract bills every month, in dollars. start_date is the day it began. A contract that has stopped carries the day it stopped in end_date; one that is still running has nothing there, shown as below and stored as NULL.

id account_id plan mrr start_date end_date
1 1 starter 49 2022-11-03 2023-02-03
2 1 growth 149 2023-02-03
3 2 growth 149 2022-12-15 2023-06-15
4 3 starter 49 2023-01-31
5 4 growth 149 2023-02-06
6 5 enterprise 499 2023-02-22
7 6 starter 49 2023-03-01 2023-04-01
8 7 growth 149 2023-03-22
9 8 enterprise 499 2023-04-28
10 2 starter 49 2023-06-15

accounts — one row per customer company. industry is the sector that company works in; signup_date is the day it created its Loopwire account.

id company_name industry signup_date
1 Northwind Traders retail 2022-11-03
2 Vertex Analytics software 2022-12-15
3 Bluepeak Logistics logistics 2023-01-20
4 Fernwood Studio media 2023-02-05
5 Cobalt Health healthcare 2023-02-18
6 Ridgeline Capital finance 2023-03-01
7 Sable & Co retail 2023-03-22
8 Hearth Robotics manufacturing 2023-04-10

Both tables already exist in the database — there is nothing to create or load.

Task: Write a query that returns one row per company with at least one running contract, with columns company_name, account_mrr (that company's combined monthly billing across its running contracts) and mrr_rank — its position on the leaderboard, 1 being the highest-paying. Companies on equal billing share a position, and the positions immediately after a shared one are skipped, so the column can read 1, 1, 3. Rows come back by position, and companies sharing a position are listed alphabetically by company name.

Example output

Shape only — these companies and figures are invented. Two are level at the top, so they share position 1 and position 2 goes unused:

company_name account_mrr mrr_rank
Ironvale Systems 900 1
Tidewater Farms 900 1
Larkspur Freight 300 3
Maple Row Dental 300 3
Orbit Grocers 300 3

(...2 more rows not shown)

Sign in to solve this problem

Reading problems is free for everyone — solving them (Run, Submit, and tracking what you've solved) needs an account.

Sign in

Discussion

Sign in to join the discussion — reading is open to everyone.

Loading comments…