{ "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": "分析组织层级", "translatedContent": "

表: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 是这张表的唯一主键。\n每一行包含关于一名员工的信息,包括他们的 ID,姓名,他们经理的 ID,薪水和部门。\n顶级经理(CEO)的 manager_id 是空的。\n
\n\n

编写一个解决方案来分析组织层级并回答下列问题:

\n\n
    \n\t
  1. 层级:对于每名员工,确定他们在组织中的层级(CEO 层级为 1,CEO 的直接下属员工层级为 2,以此类推)。
  2. \n\t
  3. 团队大小:对于每个是经理的员工,计算他们手下的(直接或间接下属)总员工数。
  4. \n\t
  5. 薪资预算:对于每个经理,计算他们控制的总薪资预算(所有手下员工的工资总和,包括间接下属,加上自己的工资)。
  6. \n
\n\n

返回结果表以 层级 升序 排序,然后以预算 降序 排序,最后以 employee_name 升序 排序。

\n\n

结果格式如下所示。

\n\n

 

\n\n

示例:

\n\n
\n

输入:

\n\n

Employees 表:

\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

输出:

\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

解释:

\n\n\n\n

注意:

\n\n\n
\n", "isPaidOnly": false, "difficulty": "Hard", "likes": 5, "dislikes": 0, "isLiked": null, "similarQuestions": "[]", "contributors": [], "langToValidPlayground": "{\"cpp\": false, \"java\": false, \"python3\": false, \"python\": false, \"javascript\": false, \"typescript\": false, \"csharp\": false, \"c\": false, \"golang\": false, \"kotlin\": false, \"swift\": false, \"rust\": false, \"ruby\": false, \"php\": false, \"dart\": false, \"scala\": false, \"elixir\": false, \"erlang\": false, \"racket\": false, \"cangjie\": false, \"bash\": false, \"html\": false, \"pythonml\": false, \"react\": false, \"vanillajs\": false, \"mysql\": false, \"mssql\": false, \"postgresql\": false, \"oraclesql\": false, \"pythondata\": false}", "topicTags": [ { "name": "Database", "slug": "database", "translatedName": "数据库", "__typename": "TopicTagNode" } ], "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": "PostgreSQL", "langSlug": "postgresql", "code": "-- Write your PostgreSQL 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" } ], "stats": "{\"totalAccepted\": \"883\", \"totalSubmission\": \"1.4K\", \"totalAcceptedRaw\": 883, \"totalSubmissionRaw\": 1361, \"acRate\": \"64.9%\"}", "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" } } }