mirror of
				https://gitee.com/coder-xiaomo/leetcode-problemset
				synced 2025-11-04 03:33:12 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			122 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<p>表:<code>Employees</code></p>
 | 
						||
 | 
						||
<pre>
 | 
						||
+----------------+---------+
 | 
						||
| Column Name    | Type    | 
 | 
						||
+----------------+---------+
 | 
						||
| employee_id    | int     |
 | 
						||
| employee_name  | varchar |
 | 
						||
| manager_id     | int     |
 | 
						||
| salary         | int     |
 | 
						||
| department     | varchar |
 | 
						||
+----------------+----------+
 | 
						||
employee_id 是这张表的唯一主键。
 | 
						||
每一行包含关于一名员工的信息,包括他们的 ID,姓名,他们经理的 ID,薪水和部门。
 | 
						||
顶级经理(CEO)的 manager_id 是空的。
 | 
						||
</pre>
 | 
						||
 | 
						||
<p>编写一个解决方案来分析组织层级并回答下列问题:</p>
 | 
						||
 | 
						||
<ol>
 | 
						||
	<li><strong>层级:</strong>对于每名员工,确定他们在组织中的层级(CEO 层级为 <code>1</code>,CEO 的直接下属员工层级为 <code>2</code>,以此类推)。</li>
 | 
						||
	<li><strong>团队大小:</strong>对于每个是经理的员工,计算他们手下的(直接或间接下属)总员工数。</li>
 | 
						||
	<li><strong>薪资预算:</strong>对于每个经理,计算他们控制的总薪资预算(所有手下员工的工资总和,包括间接下属,加上自己的工资)。</li>
 | 
						||
</ol>
 | 
						||
 | 
						||
<p>返回结果表以 <strong>层级</strong> <strong>升序</strong> 排序,然后以预算 <strong>降序</strong> 排序,最后以 <strong>employee_name 升序 </strong>排序。</p>
 | 
						||
 | 
						||
<p>结果格式如下所示。</p>
 | 
						||
 | 
						||
<p> </p>
 | 
						||
 | 
						||
<p><strong class="example">示例:</strong></p>
 | 
						||
 | 
						||
<div class="example-block">
 | 
						||
<p><strong>输入:</strong></p>
 | 
						||
 | 
						||
<p>Employees 表:</p>
 | 
						||
 | 
						||
<pre class="example-io">
 | 
						||
+-------------+---------------+------------+--------+-------------+
 | 
						||
| employee_id | employee_name | manager_id | salary | department  |
 | 
						||
+-------------+---------------+------------+--------+-------------+
 | 
						||
| 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 |
 | 
						||
+-------------+---------------+------------+--------+-------------+
 | 
						||
</pre>
 | 
						||
 | 
						||
<p><strong>输出:</strong></p>
 | 
						||
 | 
						||
<pre class="example-io">
 | 
						||
+-------------+---------------+-------+-----------+--------+
 | 
						||
| employee_id | employee_name | level | team_size | budget |
 | 
						||
+-------------+---------------+-------+-----------+--------+
 | 
						||
| 1           | Alice         | 1     | 9         | 84500  |
 | 
						||
| 3           | Charlie       | 2     | 4         | 41500  |
 | 
						||
| 2           | Bob           | 2     | 3         | 31000  |
 | 
						||
| 6           | Frank         | 3     | 2         | 23000  |
 | 
						||
| 4           | David         | 3     | 1         | 13500  |
 | 
						||
| 7           | Grace         | 3     | 0         | 8500   |
 | 
						||
| 5           | Eva           | 3     | 0         | 7500   |
 | 
						||
| 9           | Ivy           | 4     | 0         | 7000   |
 | 
						||
| 10          | Judy          | 4     | 0         | 7000   |
 | 
						||
| 8           | Hank          | 4     | 0         | 6000   |
 | 
						||
+-------------+---------------+-------+-----------+--------+
 | 
						||
</pre>
 | 
						||
 | 
						||
<p><strong>解释:</strong></p>
 | 
						||
 | 
						||
<ul>
 | 
						||
	<li><strong>组织结构:</strong>
 | 
						||
 | 
						||
	<ul>
 | 
						||
		<li>Alice(ID:1)是 CEO(层级 1)没有经理。</li>
 | 
						||
		<li>Bob(ID:2)和 Charlie(ID:3)是 Alice 的直接下属(层级 2)</li>
 | 
						||
		<li>David(ID:4),Eva(ID:5)从属于 Bob,而 Frank(ID:6)和 Grace(ID:7)从属于 Charlie(层级 3)</li>
 | 
						||
		<li>Hank(ID:8)从属于 David,而 Ivy(ID:9)和 Judy(ID:10)从属于 Frank(层级 4)</li>
 | 
						||
	</ul>
 | 
						||
	</li>
 | 
						||
	<li><strong>层级计算:</strong>
 | 
						||
	<ul>
 | 
						||
		<li>CEO(Alice)层级为 1</li>
 | 
						||
		<li>每个后续的管理层级都会使层级数加 1</li>
 | 
						||
	</ul>
 | 
						||
	</li>
 | 
						||
	<li><strong>团队大小计算:</strong>
 | 
						||
	<ul>
 | 
						||
		<li>Alice 手下有 9 个员工(除她以外的整个公司)</li>
 | 
						||
		<li>Bob 手下有 3 个员工(David,Eva 和 Hank)</li>
 | 
						||
		<li>Charlie 手下有 4 个员工(Frank,Grace,Ivy 和 Judy)</li>
 | 
						||
		<li>David 手下有 1 个员工(Hank)</li>
 | 
						||
		<li>Frank 手下有 2 个员工(Ivy 和 Judy)</li>
 | 
						||
		<li>Eva,Grace,Hank,Ivy 和 Judy 没有直接下属(team_size = 0)</li>
 | 
						||
	</ul>
 | 
						||
	</li>
 | 
						||
	<li><strong>预算计算:</strong>
 | 
						||
	<ul>
 | 
						||
		<li>Alice 的预算:她的工资(12000)+ 所有员工的工资(72500)= 84500</li>
 | 
						||
		<li>Charlie 的预算:他的工资(10000)+ Frank 的预算(23000)+ Grace 的工资(8500)= 41500</li>
 | 
						||
		<li>Bob 的预算:他的工资 (10000) + David 的预算(13500)+ Eva 的工资(7500)= 31000</li>
 | 
						||
		<li>Frank 的预算:他的工资 (9000) + Ivy 的工资(7000)+ Judy 的工资(7000)= 23000</li>
 | 
						||
		<li>David 的预算:他的工资 (7500) + Hank 的工资(6000)= 13500</li>
 | 
						||
		<li>没有直接下属的员工的预算等于他们自己的工资。</li>
 | 
						||
	</ul>
 | 
						||
	</li>
 | 
						||
</ul>
 | 
						||
 | 
						||
<p><strong>注意:</strong></p>
 | 
						||
 | 
						||
<ul>
 | 
						||
	<li>结果先以层级升序排序</li>
 | 
						||
	<li>在同一层级内,员工按预算降序排序,然后按姓名升序排序</li>
 | 
						||
</ul>
 | 
						||
</div>
 |