Skip to content

Bug: SQL Тренажер - Ошибка при проверке задания №147 #60

@Turbonasos42

Description

@Turbonasos42

Ошибка при проверке задания №147

https://sql-academy.org/ru/trainer/tasks/147
Тест показывает неправильное решение, хотя все даты и формат верные. Одна дата встречается в двух различных записях как дата начала и окончания, если учитывать это, то тест пишет, что строк мало

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

Без учета повторений:

SELECT generate_series(start_date, end_date, interval '1 day') AS day
FROM Reservations
WHERE room_id = 1;

С учетом повторений:

SELECT DISTINCT generate_series(start_date, end_date, interval '1 day') AS day
FROM Reservations
WHERE room_id = 1

Без учета повторений, второй вариант:

with RECURSIVE Dates as (
	select start_date,
		end_date
	from Reservations
	where room_id = 1
	union all
	select Dates.start_date + interval '1 day',
		end_date
	from Dates
	where Dates.start_date + interval '1 day' <= end_date
)
Select start_date as day
from Dates
order by day

Без учета повторений, второй вариант:

with RECURSIVE Dates as (
	select start_date,
		end_date
	from Reservations
	where room_id = 1
	union all
	select Dates.start_date + interval '1 day',
		end_date
	from Dates
	where Dates.start_date + interval '1 day' <= end_date
)
Select distinct start_date as day
from Dates
order by day

Скриншоты тренажера

Image Image

Все даты для комнаты с room_id = 1 (для ручной проверки)

select start_date, end_date from Reservations
    where room_id = 1;
Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions