Share of the Payroll Pie
The CFO of Kestrel Labs wants a pie chart for the board pack showing how the salary bill splits across the teams. Raw totals will not do — the board reads shares, and a share means each team's bill expressed against the company's whole bill.
That is the awkward bit. Each slice needs a figure from its own team and a figure covering every team at once, and the second one is not available while the rows are being gathered team by team.
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, department_id and payroll_pct (that team's total salary bill as a percentage of the company's total salary bill, rounded to one decimal place), one row per team that has at least one employee, largest share first. Give a percentage out of 100, not a fraction of 1 — so a team holding a third of the bill reads 33.3, not 0.333.
Example output — shape only, on invented teams. The shares are percentages out of 100 and cover the whole bill between them:
| department_id | payroll_pct |
|---|---|
| 21 | 48.6 |
| 24 | 33.7 |
| 27 | 17.7 |
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