Skip to content

Commit cc23b2b

Browse files
authored
Create README.md
1 parent 51bc881 commit cc23b2b

1 file changed

Lines changed: 82 additions & 0 deletions

File tree

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# Разбор домашнего задания 11.1
2+
Для сотрудника с идентификатором 2 посчитать, сколько всего у него подчиненных.
3+
```sql
4+
with recursive subordinates as (
5+
-- select
6+
-- e.employee_id
7+
-- from
8+
-- employees e
9+
-- where
10+
-- e.employee_id = 2
11+
select
12+
2 as employee_id
13+
union
14+
select
15+
e.employee_id
16+
from
17+
subordinates s
18+
join employees e
19+
on
20+
e.manager_id = s.employee_id
21+
)
22+
select
23+
count(*) - 1 as subordinates_cnt
24+
from
25+
subordinates;
26+
```
27+
Для сотрудника с идентификатором 20 посчитать, сколько всего у него начальников.
28+
```sql
29+
with recursive managers as (
30+
select
31+
e.manager_id
32+
from
33+
employees e
34+
where
35+
e.employee_id = 20
36+
union
37+
select
38+
e.manager_id
39+
from
40+
managers m
41+
join employees e
42+
on
43+
e.employee_id = m.manager_id
44+
)
45+
select
46+
count(manager_id)
47+
from
48+
managers;
49+
```
50+
С помощью рекурсивного запроса вывести сотрудника с идентификатором 1 и всех его подчиненных со второго и третьего уровней иерархии.
51+
С 4ого уровня и ниже подчиненных выводить не нужно.
52+
```sql
53+
with recursive subordinates as (
54+
select
55+
e.employee_id,
56+
e.full_name,
57+
1 as level_hier
58+
from
59+
employees e
60+
where
61+
e.employee_id = 1
62+
union
63+
select
64+
e.employee_id,
65+
e.full_name,
66+
s.level_hier + 1 as level_hier
67+
from
68+
subordinates s
69+
join employees e
70+
on
71+
e.manager_id = s.employee_id
72+
where
73+
s.level_hier + 1 < 4
74+
)
75+
select
76+
e.employee_id,
77+
e.full_name
78+
from
79+
subordinates e;
80+
```
81+
82+

0 commit comments

Comments
 (0)