|  | 
| 1 | 1 | # Write your MySQL query statement below | 
| 2 |  | -# #Hard #Database #2025_03_11_Time_712_ms_(100.00%)_Space_0.0_MB_(100.00%) | 
| 3 |  | -with recursive org_hierarchy(orig_employee_id, orig_employee_name, employee_id, employee_name, manager_id, salary, org_level) as | 
| 4 |  | -( | 
| 5 |  | -    select employee_id as orig_employee_id, | 
| 6 |  | -    employee_name as orig_employee_name, | 
|  | 2 | +# #Hard #Database #2025_05_30_Time_294_ms_(80.03%)_Space_0.0_MB_(100.00%) | 
|  | 3 | +WITH RECURSIVE org_hierarchy ( | 
|  | 4 | +    orig_employee_id, | 
|  | 5 | +    orig_employee_name, | 
| 7 | 6 |     employee_id, | 
| 8 | 7 |     employee_name, | 
| 9 | 8 |     manager_id, | 
| 10 | 9 |     salary, | 
| 11 |  | -    1 as org_level | 
| 12 |  | -    from Employees | 
|  | 10 | +    org_level | 
|  | 11 | +) AS ( | 
|  | 12 | +    SELECT | 
|  | 13 | +        employee_id AS orig_employee_id, | 
|  | 14 | +        employee_name AS orig_employee_name, | 
|  | 15 | +        employee_id, | 
|  | 16 | +        employee_name, | 
|  | 17 | +        manager_id, | 
|  | 18 | +        salary, | 
|  | 19 | +        1 AS org_level | 
|  | 20 | +    FROM Employees | 
|  | 21 | + | 
| 13 | 22 |     UNION ALL | 
| 14 |  | -    select P.orig_employee_id, | 
| 15 |  | -    P.orig_employee_name, | 
| 16 |  | -    CH.employee_id, | 
| 17 |  | -    CH.employee_name, | 
| 18 |  | -    CH.manager_id, | 
| 19 |  | -    CH.salary, | 
| 20 |  | -    P.org_level + 1 | 
| 21 |  | -    from org_hierarchy P, Employees CH | 
| 22 |  | -    where ch.manager_id = P.employee_id | 
|  | 23 | + | 
|  | 24 | +    SELECT | 
|  | 25 | +        P.orig_employee_id, | 
|  | 26 | +        P.orig_employee_name, | 
|  | 27 | +        CH.employee_id, | 
|  | 28 | +        CH.employee_name, | 
|  | 29 | +        CH.manager_id, | 
|  | 30 | +        CH.salary, | 
|  | 31 | +        P.org_level + 1 | 
|  | 32 | +    FROM org_hierarchy P | 
|  | 33 | +    JOIN Employees CH ON CH.manager_id = P.employee_id | 
| 23 | 34 | ), | 
| 24 |  | -CEO_hierarchy as ( | 
| 25 |  | -    select org_hierarchy.employee_id as SUB_employee_id, | 
| 26 |  | -    org_hierarchy.employee_name, | 
| 27 |  | -    org_hierarchy.org_level as sub_level | 
| 28 |  | -    from org_hierarchy, Employees | 
| 29 |  | -    where org_hierarchy.orig_employee_id = Employees.employee_id | 
| 30 |  | -    and Employees.manager_id is null | 
|  | 35 | +CEO_hierarchy ( | 
|  | 36 | +    sub_employee_id, | 
|  | 37 | +    employee_name, | 
|  | 38 | +    sub_level | 
|  | 39 | +) AS ( | 
|  | 40 | +    SELECT | 
|  | 41 | +        oh.employee_id AS sub_employee_id, | 
|  | 42 | +        oh.employee_name, | 
|  | 43 | +        oh.org_level AS sub_level | 
|  | 44 | +    FROM org_hierarchy oh | 
|  | 45 | +    JOIN Employees e ON oh.orig_employee_id = e.employee_id | 
|  | 46 | +    WHERE e.manager_id IS NULL | 
| 31 | 47 | ) | 
| 32 |  | -select | 
| 33 |  | -org_hierarchy.ORIG_EMPLOYEE_ID as employee_id, | 
| 34 |  | -org_hierarchy.ORIG_EMPLOYEE_name as employee_name, | 
| 35 |  | -CEO_hierarchy.sub_level as "level", | 
| 36 |  | -count(*) - 1 as team_size, | 
| 37 |  | -sum(org_hierarchy.salary) as budget | 
| 38 |  | -from org_hierarchy, CEO_hierarchy | 
| 39 |  | -where org_hierarchy.ORIG_EMPLOYEE_ID = CEO_hierarchy.SUB_employee_id | 
| 40 |  | -group by org_hierarchy.ORIG_EMPLOYEE_ID, | 
| 41 |  | -org_hierarchy.ORIG_EMPLOYEE_name, | 
| 42 |  | -CEO_hierarchy.sub_level | 
| 43 |  | -order by 3 asc, 5 desc, 2 | 
|  | 48 | + | 
|  | 49 | +SELECT | 
|  | 50 | +    oh.orig_employee_id AS employee_id, | 
|  | 51 | +    oh.orig_employee_name AS employee_name, | 
|  | 52 | +    ch.sub_level AS level, | 
|  | 53 | +    COUNT(*) - 1 AS team_size, | 
|  | 54 | +    SUM(oh.salary) AS budget | 
|  | 55 | +FROM org_hierarchy oh | 
|  | 56 | +JOIN CEO_hierarchy ch ON oh.orig_employee_id = ch.sub_employee_id | 
|  | 57 | +GROUP BY | 
|  | 58 | +    oh.orig_employee_id, | 
|  | 59 | +    oh.orig_employee_name, | 
|  | 60 | +    ch.sub_level | 
|  | 61 | +ORDER BY | 
|  | 62 | +    level ASC, budget DESC, employee_name ASC; | 
0 commit comments