{ "data": { "question": { "questionId": "3828", "questionFrontendId": "3482", "categoryTitle": "Database", "boundTopicId": 3605805, "title": "Analyze Organization Hierarchy", "titleSlug": "analyze-organization-hierarchy", "content": "

Table: Employees

\n\n
\n+----------------+---------+\n| Column Name    | Type    | \n+----------------+---------+\n| employee_id    | int     |\n| employee_name  | varchar |\n| manager_id     | int     |\n| salary         | int     |\n| department     | varchar |\n+----------------+----------+\nemployee_id is the unique key for this table.\nEach row contains information about an employee, including their ID, name, their manager's ID, salary, and department.\nmanager_id is null for the top-level manager (CEO).\n
\n\n

Write a solution to analyze the organizational hierarchy and answer the following:

\n\n
    \n\t
  1. Hierarchy Levels: For each employee, determine their level in the organization (CEO is level 1, employees reporting directly to the CEO are level 2, and so on).
  2. \n\t
  3. Team Size: For each employee who is a manager, count the total number of employees under them (direct and indirect reports).
  4. \n\t
  5. Salary Budget: For each manager, calculate the total salary budget they control (sum of salaries of all employees under them, including indirect reports, plus their own salary).
  6. \n
\n\n

Return the result table ordered by the result ordered by level in ascending order, then by budget in descending order, and finally by employee_name in ascending order.

\n\n

The result format is in the following example.

\n\n

 

\n

Example:

\n\n
\n

Input:

\n\n

Employees table:

\n\n
\n+-------------+---------------+------------+--------+-------------+\n| employee_id | employee_name | manager_id | salary | department  |\n+-------------+---------------+------------+--------+-------------+\n| 1           | Alice         | null       | 12000  | Executive   |\n| 2           | Bob           | 1          | 10000  | Sales       |\n| 3           | Charlie       | 1          | 10000  | Engineering |\n| 4           | David         | 2          | 7500   | Sales       |\n| 5           | Eva           | 2          | 7500   | Sales       |\n| 6           | Frank         | 3          | 9000   | Engineering |\n| 7           | Grace         | 3          | 8500   | Engineering |\n| 8           | Hank          | 4          | 6000   | Sales       |\n| 9           | Ivy           | 6          | 7000   | Engineering |\n| 10          | Judy          | 6          | 7000   | Engineering |\n+-------------+---------------+------------+--------+-------------+\n
\n\n

Output:

\n\n
\n+-------------+---------------+-------+-----------+--------+\n| employee_id | employee_name | level | team_size | budget |\n+-------------+---------------+-------+-----------+--------+\n| 1           | Alice         | 1     | 9         | 84500  |\n| 3           | Charlie       | 2     | 4         | 41500  |\n| 2           | Bob           | 2     | 3         | 31000  |\n| 6           | Frank         | 3     | 2         | 23000  |\n| 4           | David         | 3     | 1         | 13500  |\n| 7           | Grace         | 3     | 0         | 8500   |\n| 5           | Eva           | 3     | 0         | 7500   |\n| 9           | Ivy           | 4     | 0         | 7000   |\n| 10          | Judy          | 4     | 0         | 7000   |\n| 8           | Hank          | 4     | 0         | 6000   |\n+-------------+---------------+-------+-----------+--------+\n
\n\n

Explanation:

\n\n\n\n

Note:

\n\n\n
\n", "translatedTitle": null, "translatedContent": null, "isPaidOnly": false, "difficulty": "Hard", "likes": 0, "dislikes": 0, "isLiked": null, "similarQuestions": "[]", "contributors": [], "langToValidPlayground": "{\"cpp\": false, \"java\": false, \"python\": false, \"python3\": false, \"mysql\": false, \"mssql\": false, \"oraclesql\": false, \"c\": false, \"csharp\": false, \"javascript\": false, \"typescript\": false, \"bash\": false, \"php\": false, \"swift\": false, \"kotlin\": false, \"dart\": false, \"golang\": false, \"ruby\": false, \"scala\": false, \"html\": false, \"pythonml\": false, \"rust\": false, \"racket\": false, \"erlang\": false, \"elixir\": false, \"pythondata\": false, \"react\": false, \"vanillajs\": false, \"postgresql\": false, \"cangjie\": false}", "topicTags": [], "companyTagStats": null, "codeSnippets": [ { "lang": "MySQL", "langSlug": "mysql", "code": "# Write your MySQL query statement below", "__typename": "CodeSnippetNode" }, { "lang": "MS SQL Server", "langSlug": "mssql", "code": "/* Write your T-SQL query statement below */", "__typename": "CodeSnippetNode" }, { "lang": "Oracle", "langSlug": "oraclesql", "code": "/* Write your PL/SQL query statement below */", "__typename": "CodeSnippetNode" }, { "lang": "Pandas", "langSlug": "pythondata", "code": "import pandas as pd\n\ndef analyze_organization_hierarchy(employees: pd.DataFrame) -> pd.DataFrame:\n ", "__typename": "CodeSnippetNode" }, { "lang": "PostgreSQL", "langSlug": "postgresql", "code": "-- Write your PostgreSQL query statement below", "__typename": "CodeSnippetNode" } ], "stats": "{\"totalAccepted\": \"40\", \"totalSubmission\": \"47\", \"totalAcceptedRaw\": 40, \"totalSubmissionRaw\": 47, \"acRate\": \"85.1%\"}", "hints": [], "solution": null, "status": null, "sampleTestCase": "{\"headers\":{\"Employees\":[\"employee_id\",\"employee_name\",\"manager_id\",\"salary\",\"department\"]},\"rows\":{\"Employees\":[[1,\"Alice\",null,12000,\"Executive\"],[2,\"Bob\",1,10000,\"Sales\"],[3,\"Charlie\",1,10000,\"Engineering\"],[4,\"David\",2,7500,\"Sales\"],[5,\"Eva\",2,7500,\"Sales\"],[6,\"Frank\",3,9000,\"Engineering\"],[7,\"Grace\",3,8500,\"Engineering\"],[8,\"Hank\",4,6000,\"Sales\"],[9,\"Ivy\",6,7000,\"Engineering\"],[10,\"Judy\",6,7000,\"Engineering\"]]}}", "metaData": "{\"mysql\":[\"CREATE TABLE if not exists Employees (\\n employee_id INT,\\n employee_name VARCHAR(100),\\n manager_id INT,\\n salary INT,\\n department VARCHAR(50)\\n)\"],\"mssql\":[\"CREATE TABLE Employees (\\n employee_id INT,\\n employee_name VARCHAR(100),\\n manager_id INT,\\n salary INT,\\n department VARCHAR(50)\\n)\"],\"oraclesql\":[\"CREATE TABLE Employees (\\n employee_id NUMBER,\\n employee_name VARCHAR2(100),\\n manager_id NUMBER,\\n salary NUMBER,\\n department VARCHAR2(50)\\n)\"],\"database\":true,\"name\":\"analyze_organization_hierarchy\",\"postgresql\":[\"CREATE TABLE IF NOT EXISTS Employees (\\n employee_id INT,\\n employee_name VARCHAR(100),\\n manager_id INT,\\n salary INT,\\n department VARCHAR(50)\\n);\\n\"],\"pythondata\":[\"Employees = pd.DataFrame(columns=[\\\"employee_id\\\", \\\"employee_name\\\", \\\"manager_id\\\", \\\"salary\\\", \\\"department\\\"]).astype({\\\"employee_id\\\": \\\"int\\\", \\\"employee_name\\\": \\\"string\\\", \\\"manager_id\\\": \\\"Int64\\\", \\\"salary\\\": \\\"int\\\", \\\"department\\\": \\\"string\\\"})\\n\"],\"database_schema\":{\"Employees\":{\"employee_id\":\"INT\",\"employee_name\":\"VARCHAR(100)\",\"manager_id\":\"INT\",\"salary\":\"INT\",\"department\":\"VARCHAR(50)\"}}}", "judgerAvailable": true, "judgeType": "large", "mysqlSchemas": [ "CREATE TABLE if not exists Employees (\n employee_id INT,\n employee_name VARCHAR(100),\n manager_id INT,\n salary INT,\n department VARCHAR(50)\n)", "Truncate table Employees", "insert into Employees (employee_id, employee_name, manager_id, salary, department) values ('1', 'Alice', NULL, '12000', 'Executive')", "insert into Employees (employee_id, employee_name, manager_id, salary, department) values ('2', 'Bob', '1', '10000', 'Sales')", "insert into Employees (employee_id, employee_name, manager_id, salary, department) values ('3', 'Charlie', '1', '10000', 'Engineering')", "insert into Employees (employee_id, employee_name, manager_id, salary, department) values ('4', 'David', '2', '7500', 'Sales')", "insert into Employees (employee_id, employee_name, manager_id, salary, department) values ('5', 'Eva', '2', '7500', 'Sales')", "insert into Employees (employee_id, employee_name, manager_id, salary, department) values ('6', 'Frank', '3', '9000', 'Engineering')", "insert into Employees (employee_id, employee_name, manager_id, salary, department) values ('7', 'Grace', '3', '8500', 'Engineering')", "insert into Employees (employee_id, employee_name, manager_id, salary, department) values ('8', 'Hank', '4', '6000', 'Sales')", "insert into Employees (employee_id, employee_name, manager_id, salary, department) values ('9', 'Ivy', '6', '7000', 'Engineering')", "insert into Employees (employee_id, employee_name, manager_id, salary, department) values ('10', 'Judy', '6', '7000', 'Engineering')" ], "enableRunCode": true, "envInfo": "{\"mysql\":[\"MySQL\",\"

\\u7248\\u672c\\uff1aMySQL 8.0<\\/code><\\/p>\"],\"mssql\":[\"MS SQL Server\",\"

mssql server 2019.<\\/p>\"],\"oraclesql\":[\"Oracle\",\"

Oracle Sql 11.2.<\\/p>\"],\"pythondata\":[\"Pandas\",\"

Python 3.10 with Pandas 2.2.2 and NumPy 1.26.4<\\/p>\"],\"postgresql\":[\"PostgreSQL\",\"

PostgreSQL 16<\\/p>\"]}", "book": null, "isSubscribed": false, "isDailyQuestion": false, "dailyRecordStatus": null, "editorType": "CKEDITOR", "ugcQuestionId": null, "style": "LEETCODE", "exampleTestcases": "{\"headers\":{\"Employees\":[\"employee_id\",\"employee_name\",\"manager_id\",\"salary\",\"department\"]},\"rows\":{\"Employees\":[[1,\"Alice\",null,12000,\"Executive\"],[2,\"Bob\",1,10000,\"Sales\"],[3,\"Charlie\",1,10000,\"Engineering\"],[4,\"David\",2,7500,\"Sales\"],[5,\"Eva\",2,7500,\"Sales\"],[6,\"Frank\",3,9000,\"Engineering\"],[7,\"Grace\",3,8500,\"Engineering\"],[8,\"Hank\",4,6000,\"Sales\"],[9,\"Ivy\",6,7000,\"Engineering\"],[10,\"Judy\",6,7000,\"Engineering\"]]}}", "__typename": "QuestionNode" } } }