Skip to content

Commit 83c807d

Browse files
committed
Add SQL task №17. Add script to run PostgreSQL Docker container for SQL tasks
1 parent f3bfe07 commit 83c807d

File tree

3 files changed

+48
-0
lines changed

3 files changed

+48
-0
lines changed

sql/17.sql

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
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;

sql/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,6 @@
1919
- [14. Поиск сотрудника с второй по величине зарплатой](14.sql)
2020
- [15. Задача о пользователях и их телефонах](15.sql)
2121
- [16. Задача про стадионы и матчи](16.sql)
22+
- [17. Поиск сотрудников, менеджеры которых покинули компанию](17.sql)
2223

2324
See [video solutions](https://youtu.be/GjDF_LdwYHU) of these tasks on YouTube

sql/run-in-docker.bat

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
echo Start Docker container with PostgreSQL
2+
3+
docker-compose up

0 commit comments

Comments
 (0)