|
| 1 | + |
| 2 | +-- 17. Поиск сотрудников, менеджеры которых покинули компанию |
| 3 | + |
| 4 | +-- Напишите SQL-запрос, который вернет идентификаторы сотрудников, чья зарплата строго меньше $30 000 |
| 5 | +-- и чей руководитель покинул компанию. |
| 6 | +-- Когда сотрудник покидает компанию, его информация удаляется из таблицы Employees, но у его подчиненных |
| 7 | +-- остается его идентификатор. |
| 8 | + |
| 9 | +-- Таблица: Employees |
| 10 | +-- +-------------+----------+ |
| 11 | +-- | Column Name | Type | |
| 12 | +-- +-------------+----------+ |
| 13 | +-- | employee_id | int | |
| 14 | +-- | name | varchar | |
| 15 | +-- | manager_id | int | |
| 16 | +-- | salary | int | |
| 17 | +-- +-------------+----------+ |
| 18 | +-- В таблице employee_id является первичным ключом для этой таблицы. |
| 19 | +-- Эта таблица содержит информацию о сотрудниках, их зарплате и идентификаторе их руководителя. |
| 20 | +-- У некоторых сотрудников нет руководителя (manager_id имеет значение null). |
| 21 | +-- Верните таблицу результатов (идентификатор, зарплата), упорядоченную по идентификатору сотрудника. |
| 22 | + |
| 23 | +create table Employees ( |
| 24 | + employee_id int primary key, |
| 25 | + "name" varchar not null, |
| 26 | + manager_id int, |
| 27 | + salary int not null |
| 28 | +); |
| 29 | + |
| 30 | +-- Нужны кейсы: |
| 31 | +-- менеджер не покинул компанию и з/п <30к |
| 32 | +-- менеджер не покинул компанию и з/п >30к |
| 33 | +-- менеджер покинул компанию и з/п <30к |
| 34 | +-- менеджер покинул компанию и з/п >30к |
| 35 | + |
| 36 | +insert into Employees(employee_id, name, manager_id, salary) values (1, 'Владимир', null, 45000); |
| 37 | +insert into Employees(employee_id, name, manager_id, salary) values (2, 'Андрей', 1, 29000); -- менеджер не покинул компанию и з/п <30к |
| 38 | +insert into Employees(employee_id, name, manager_id, salary) values (3, 'Алексей', 2, 31000); -- менеджер не покинул компанию и з/п >30к |
| 39 | +insert into Employees(employee_id, name, manager_id, salary) values (4, 'Яна', 6, 29000); -- менеджер покинул компанию и з/п <30к |
| 40 | +insert into Employees(employee_id, name, manager_id, salary) values (5, 'Дмитрий', 7, 31000); -- менеджер покинул компанию и з/п >30к |
| 41 | +select * from Employees; |
| 42 | + |
| 43 | +-- Нужно найти работников, у которых заполнен manager_id значением, которого уже нет в таблице в колонке employee_id |
| 44 | +select e.employee_id from Employees m right join Employees e on m.employee_id=e.manager_id where e.salary < 30000 and m.employee_id is null order by e.employee_id; |
0 commit comments