Who Manages the Most People?
A re-org at Kestrel Labs is being planned and the first question in the room is who is already stretched. The measure everyone agrees on is span of control: how many people report directly to each manager today.
The awkward part is that managers are not stored anywhere separately. There is one table of people, and a manager is simply somebody whose id appears in another person's manager_id. So the same table has to play two roles at once — the people being counted, and the people they point at.
employees — one row per person. department_id is the team they sit on, given as the matching id in departments; salary is annual pay in dollars; hire_date is the day they started, written year-month-day; manager_id is the id of the person they report to, and is NULL for anyone who reports to nobody.
| id | name | department_id | salary | hire_date | manager_id |
|---|---|---|---|---|---|
| 1 | Ava Chen | 1 | 145000 | 2021-03-14 | NULL |
| 2 | Ben Ortiz | 1 | 118000 | 2022-06-01 | 1 |
| 3 | Cara Novak | 1 | 121000 | 2023-01-10 | 1 |
| 4 | Deshawn Lee | 2 | 95000 | 2020-09-23 | NULL |
| 5 | Elin Kask | 2 | 88000 | 2022-11-05 | 4 |
| 6 | Farid Amiri | 3 | 76000 | 2023-04-18 | NULL |
| 7 | Grace Kim | 4 | 132000 | 2021-07-30 | NULL |
| 8 | Hugo Silva | 4 | 110000 | 2023-02-14 | 7 |
| 9 | Ines Duarte | 4 | 104000 | 2023-08-01 | 7 |
| 10 | Jonas Weber | 2 | 91000 | 2021-12-19 | 4 |
The table already exists in the database — there is nothing to create or load.
Task: Write a query returning two columns, manager_name (the manager's name) and reports (how many employees name that person as their manager), one row per person who has at least one direct report. Someone who manages nobody does not appear at all, not even with a zero. Order the rows by reports, largest first, and break ties alphabetically by manager_name.
Example output — shape only, on invented people. The last two are level, so they fall alphabetically:
| manager_name | reports |
|---|---|
| Nils Ahlberg | 7 |
| Mira Solberg | 4 |
| Otto Brandt | 4 |
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