All problems

Share of the Payroll Pie

hardSQLWindow FunctionsArithmetic

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

Discussion

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

Loading comments…