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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions