Л А Б О Р А Т О Р И Я

актуальных

РЕШЕНИЙ


MySQL - TEST

решение тестовой задачи MySQL

Получил по запросу от одной компании тестовую задачу, чтобы прокачать свои текущие навыки, и понять уровень требований на рынке по моей специализации.

Описание задачи:

Задание MySQL

Размышления над реализацией:

  1. Если брать разность между датой начала и окончания работы пользователя с клиентом, то необходимо учитывать дополнительный день - день начала работы.
  2. Получить значение даты в следующей строке, чтобы установить значение DateEnd, можно следующим способом - делая выборку строк в обратном порядке (см. строка 10 реализации) и присваивая значение даты промежуточной переменной finishDate (см. строка 8 реализации) во вложенном запросе.
  3. Вложенный запрос позволяет получить данные в виде "table1" для создания результирующей выборки. В "table1" получаем дополнительное поле endDate - дата окончания обслуживания, присваиваем через промежуточную переменную finishDate.
  4. Для пользователя, который еще не закончил обслуживание, и продолжает работать с клиентом, значение даты окончания обслуживания endDate будет NULL, значит при проверке на NULL значения endData (см. строка 7 реализации), будет принимать либо значение из промежуточной переменной finishDate, либо текущую дату.
  5. Вычисление разницы между днем начала и окончания обслуживания, выпоняется (см. строка 4 реализации) с учетом дополнительного дня (см. п.1).

Вот такая итоговая реализация получилась:

Text MySQL

Удачи в разработке!



другие материалы: