Создание процедуры, проверяющую нагрузку тренеров в спортивном клубе
Необходимо создать процедуру, проверяющую нагрузку тренеров. Если тренер ведет больше 3-х групп в день (количество одинаковых lesson_coach_id за один день > 3), или время его занятий с одной группой совпадает со временем занятий в другой (lesson_star_date и lesson_end_date для одного тренера в один день пересекаются) группе, или перерыв между двумя занятиями меньше 15 минут или больше 3-х часов (тут разница межу lesson_end_date и lesson start_date, как я понимаю), то такие сведения выдаются на экран. Если таких ситуаций нет, процедура выдает "Без нарушений".
Понимаю, что задание непростое, чтобы его просто так сделать, прошу дать хотя бы наброски.
Имеется таблица:
Занятия
CREATE TABLE lesson
( lesson_id number(5) NOT NULL,
lesson_section_id number(5) NOT NULL,
lesson_coach_id number(5) NOT NULL,
lesson_room number(5) NOT NULL,
lesson_start_date date NOT NULL,
lesson_end_date date NOT NULL,
lesson_cost number(5),
FOREIGN KEY (lesson_section_id) REFERENCES sections(section_id),
FOREIGN KEY (lesson_coach_id) REFERENCES coachs(coach_id),
CONSTRAINT lesson_pk PRIMARY KEY (lesson_id)
);
Ответы (1 шт):
Задание не сложное. Требуется почитать о выборке данных из таблиц с помощью select from. Порисовать временную шкалу.
Для выполнения первого задания потребуются работа с групповой функцией
COUNT(выражениеGROUP BY).Очень похожий запрос был в реализации триггера предыдущего вопроса.
Объединяем нужные записи друг с другом, вычитаем.
Самое непростое. Я решал бы через
EXISTSNOT EXISTS. Если не получилось бы, то смотрел в сторону аналитических функций.