@@ -159,3 +159,47 @@ with recursive generate_numbers as
159
159
)
160
160
161
161
select * from generate_numbers;
162
+
163
+
164
+ create table emp_mgr
165
+ (
166
+ id int,
167
+ name varchar(50),
168
+ manager_id int,
169
+ designation varchar(50),
170
+ primary key (id)
171
+ );
172
+
173
+
174
+ insert into emp_mgr values(1,'Shripath',null,'CEO');
175
+ insert into emp_mgr values(2,'Satya',5,'SDE');
176
+ insert into emp_mgr values(3,'Jia',5,'DA');
177
+ insert into emp_mgr values(4,'David',5,'DS');
178
+ insert into emp_mgr values(5,'Michael',7,'Manager');
179
+ insert into emp_mgr values(6,'Arvind',7,'Architect');
180
+ insert into emp_mgr values(7,'Asha',1,'CTO');
181
+ insert into emp_mgr values(8,'Maryam',1,'Manager');
182
+
183
+
184
+ select * from emp_mgr;
185
+
186
+ --- for our CTO 'Asha', present her org chart
187
+
188
+ with recursive emp_hir as
189
+ (
190
+ select id, name, manager_id, designation from emp_mgr where name='Asha'
191
+ UNION
192
+ select em.id, em.name, em.manager_id, em.designation from emp_hir eh inner join emp_mgr em on eh.id = em.manager_id
193
+ )
194
+
195
+ select * from emp_hir;
196
+
197
+ --- Print level of employees as well
198
+ with recursive emp_hir as
199
+ (
200
+ select id, name, manager_id, designation, 1 as lvl from emp_mgr where name='Asha'
201
+ UNION
202
+ select em.id, em.name, em.manager_id, em.designation, eh.lvl + 1 as lvl from emp_hir eh inner join emp_mgr em on eh.id = em.manager_id
203
+ )
204
+
205
+ select * from emp_hir;
0 commit comments