Самый долгий перерыв каждого члена клуба

Задача по SQL с проверкой онлайн

Сложность
Сложная
Языки
SQL
Темы
SQL: оконные функции
SQL: выборка и фильтры

Перерывом перед бронированием назовём число полных суток (24-часовых промежутков, дробную часть отбросьте) от начала предыдущего бронирования того же члена клуба до начала этого. Для каждого члена клуба (не гостя) с двумя и более бронированиями найдите бронирования, перед которыми был его самый долгий перерыв; при равенстве выведите все. Выведите столбцы memid, bookid (бронирование, которым перерыв закончился) и gap (перерыв в полных сутках, целое число). Порядок строк не важен.

Таблицы и данные уже есть в стартовом коде и создаются заново при каждом запуске (SQLite):

  • facilities(facid, name, membercost, guestcost, initialoutlay, monthlymaintenance) — объекты клуба; membercost и guestcost — цена одного слота для участника и для гостя.
  • members(memid, surname, firstname, address, zipcode, telephone, recommendedby, joindate) — участники; recommendedby — memid пригласившего или NULL; memid = 0 — гость.
  • bookings(bookid, facid, memid, starttime, slots) — бронирования; один слот — 30 минут; starttime — текст вида 2012-09-14 09:00:00.

Источник: задача CodeShare

Решить онлайнБесплатно и без регистрации: пишете код в браузере и проверяете его тестами (без аккаунта — несколько задач в день).

Ещё задачи

Все задачи для тренировки