File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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+
You can’t perform that action at this time.
0 commit comments