Задание #2
CodeReviewДрузья, сегодня у нас будет новое задание на знание SQL запросов. Не важно на каком языке вы программируете, будь то Java, Python или PHP, скорее всего вам все равно проходится сталкиваться с SQL языком для работы с базой данных.
📝 Описание
Руководители компании заинтересованы в том, чтобы узнать, кто зарабатывает больше всех в каждом из отделов компании. Высокооплачиваемый сотрудник в отделе - это сотрудник, чья зарплата входит в топ 3 зарплат в этом отделе.
Напишите SQL-запрос, чтобы найти сотрудников, которые являются высокооплачиваемыми в каждом из отделов.
Верните таблицу результатов в любом порядке.
Формат результата запроса приведен в следующем примере.
Задание взято сайта с задачами. В конце нашей ревью сессии мы опубликуем ссылку на это задание, а также наиболее оптимальное решение.
❗️ Задание может быть реализовано с использованием любых технологий. Это может быть как простой скрипт, который можно скомпилировать в онлайн компиляторе, так и браузерное приложение со своим UI.
Таблица Employee
+--------------+---------+ | Column Name | Type | +--------------+---------+ | Id | int | | Name | varchar | | Salary | int | | DepartmentId | int | +--------------+---------+
Таблица Department
+-------------+---------+ | Column Name | Type | +-------------+---------+ | Id | int | | Name | varchar | +-------------+---------+
📌 Пример
Пример ввода
Employee table: +----+-------+--------+--------------+ | Id | Name | Salary | DepartmentId | +----+-------+--------+--------------+ | 1 | Joe | 85000 | 1 | | 2 | Henry | 80000 | 2 | | 3 | Sam | 60000 | 2 | | 4 | Max | 90000 | 1 | | 5 | Janet | 69000 | 1 | | 6 | Randy | 85000 | 1 | | 7 | Will | 70000 | 1 | +----+-------+--------+--------------+ Department table: +----+-------+ | Id | Name | +----+-------+ | 1 | IT | | 2 | Sales | +----+-------+
Результат
+------------+----------+--------+ | Department | Employee | Salary | +------------+----------+--------+ | IT | Max | 90000 | | IT | Joe | 85000 | | IT | Randy | 85000 | | IT | Will | 70000 | | Sales | Henry | 80000 | | Sales | Sam | 60000 | +------------+----------+--------+
⭐️ Вариант со звездочкой
Для тех кто посчитал это задание слишком легким, мы добавили дополнительное задание со звездочкой)
- Добавьте в таблицу Employee новую колонку PaymentDate - date формата. Это колонка будет показывать, когда сотрудник получил свою зарплату.
- Найдите 3 самых высокооплачиваемых сотрудников в каждом отделе за последние 3 месяца. То есть, если сотрудник получал 10k 4 месяца назад, то он не попадет в эту выборку.
- Не учитывать сотрудников, у которых хотя бы одна зарплата была менее 5000
Это задание со звездочкой придумал наш подписчик https://t.me/netsnow, за что ему отдельный респект :)
📤 Куда сдавать задание?
После того, как вы успешно выполнили задание, вы можете прислать его на ревью, оставив свою заявку через нашу форму.
Чтобы прислать выполненое задание, вам будет необходимо выложить его на свой GitHub, сделать inital commit с рабочим кодом и в форме оставить ссылку на ваш коммит или пулл-реквест.
Вот подробная инструкция, как сделать свой первый коммит на github.
⏳ Сроки
Задание нужно прислать до среды 06.10 20:00, чтобы оно попало на следующую ревью сессию.