@@ -294,31 +294,29 @@ Now, we use a recursive CTE to find the hierarchy of employees under a specific
294294``` sql
295295WITH RECURSIVE EmployeeHierarchy AS (
296296 -- Start with Alice (the CEO)
297- SELECT EmployeeID, EmployeeName, ManagerID
297+ SELECT EmployeeID, EmployeeName, managerid, EmployeeName as LeaderName
298298 FROM Employees
299- WHERE ManagerID IS NULL
299+ WHERE EmployeeID = 1
300300 UNION ALL
301301 -- Recursively find employees reporting to the current level
302- SELECT e .EmployeeID , e .EmployeeName , e .ManagerID
302+ SELECT e .EmployeeID , e .EmployeeName , e .managerid , eh . EmployeeName
303303 FROM Employees e
304- JOIN EmployeeHierarchy eh2 ON e .ManagerID = eh2 .EmployeeID
304+ JOIN EmployeeHierarchy eh ON e .ManagerID = eh .EmployeeID
305305)
306- SELECT eh .EmployeeID , eh .EmployeeName , m .EmployeeName AS ManagerName
307- FROM EmployeeHierarchy eh
308- JOIN Employees m ON eh .ManagerID = m .EmployeeID
309- ORDER BY eh .EmployeeID ;
306+ SELECT * FROM EmployeeHierarchy;
310307```
311308
312309The output will list all employees in the hierarchy under Alice:
313310
314311``` sql
315- ┌───────────────────────────────────────────────────────┐
316- │ employeeid │ employeename │ managername │
317- ├─────────────────┼──────────────────┼──────────────────┤
318- │ 2 │ Bob │ Alice │
319- │ 3 │ Charlie │ Alice │
320- │ 4 │ David │ Bob │
321- │ 5 │ Eve │ Bob │
322- │ 6 │ Frank │ Charlie │
323- └───────────────────────────────────────────────────────┘
312+ ┌─────────────────────────────────────────────────────────────────────────┐
313+ │ employeeid │ employeename │ managerid │ leadername │
314+ ├─────────────────┼──────────────────┼─────────────────┼──────────────────┤
315+ │ 1 │ Alice │ NULL │ Alice │
316+ │ 2 │ Bob │ 1 │ Alice │
317+ │ 3 │ Charlie │ 1 │ Alice │
318+ │ 4 │ David │ 2 │ Bob │
319+ │ 5 │ Eve │ 2 │ Bob │
320+ │ 6 │ Frank │ 3 │ Charlie │
321+ └─────────────────────────────────────────────────────────────────────────┘
324322```
0 commit comments