Skip to content

Commit

Permalink
Add SQL task №17. Add script to run PostgreSQL Docker container for S…
Browse files Browse the repository at this point in the history
…QL tasks
  • Loading branch information
andrei-punko committed Dec 2, 2024
1 parent f3bfe07 commit 83c807d
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 0 deletions.
44 changes: 44 additions & 0 deletions sql/17.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@

-- 17. Поиск сотрудников, менеджеры которых покинули компанию

-- Напишите SQL-запрос, который вернет идентификаторы сотрудников, чья зарплата строго меньше $30 000
-- и чей руководитель покинул компанию.
-- Когда сотрудник покидает компанию, его информация удаляется из таблицы Employees, но у его подчиненных
-- остается его идентификатор.

-- Таблица: Employees
-- +-------------+----------+
-- | Column Name | Type |
-- +-------------+----------+
-- | employee_id | int |
-- | name | varchar |
-- | manager_id | int |
-- | salary | int |
-- +-------------+----------+
-- В таблице employee_id является первичным ключом для этой таблицы.
-- Эта таблица содержит информацию о сотрудниках, их зарплате и идентификаторе их руководителя.
-- У некоторых сотрудников нет руководителя (manager_id имеет значение null).
-- Верните таблицу результатов (идентификатор, зарплата), упорядоченную по идентификатору сотрудника.

create table Employees (
employee_id int primary key,
"name" varchar not null,
manager_id int,
salary int not null
);

-- Нужны кейсы:
-- менеджер не покинул компанию и з/п <30к
-- менеджер не покинул компанию и з/п >30к
-- менеджер покинул компанию и з/п <30к
-- менеджер покинул компанию и з/п >30к

insert into Employees(employee_id, name, manager_id, salary) values (1, 'Владимир', null, 45000);
insert into Employees(employee_id, name, manager_id, salary) values (2, 'Андрей', 1, 29000); -- менеджер не покинул компанию и з/п <30к
insert into Employees(employee_id, name, manager_id, salary) values (3, 'Алексей', 2, 31000); -- менеджер не покинул компанию и з/п >30к
insert into Employees(employee_id, name, manager_id, salary) values (4, 'Яна', 6, 29000); -- менеджер покинул компанию и з/п <30к
insert into Employees(employee_id, name, manager_id, salary) values (5, 'Дмитрий', 7, 31000); -- менеджер покинул компанию и з/п >30к
select * from Employees;

-- Нужно найти работников, у которых заполнен manager_id значением, которого уже нет в таблице в колонке employee_id
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;
1 change: 1 addition & 0 deletions sql/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,6 @@
- [14. Поиск сотрудника с второй по величине зарплатой](14.sql)
- [15. Задача о пользователях и их телефонах](15.sql)
- [16. Задача про стадионы и матчи](16.sql)
- [17. Поиск сотрудников, менеджеры которых покинули компанию](17.sql)

See [video solutions](https://youtu.be/GjDF_LdwYHU) of these tasks on YouTube
3 changes: 3 additions & 0 deletions sql/run-in-docker.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
echo Start Docker container with PostgreSQL

docker-compose up

0 comments on commit 83c807d

Please sign in to comment.