Напиши код postgreSQL Для этого они просят у вас выгрузку всех уроков за 2016 год, которые стартовали в период с 7:00 до 9:59, а также которые стартовали в период с 17:00 до 19:59. Коллеги подозревают, что именно эти часы приносят больше всего учеников. Исключите из рассмотрения уроки с отрицательной длительностью, а также уроки, у которых нет информации о статусе. Выведите сто первых уроков в 2016 году, но исключите из рассмотрения 1 января 2016 года. Вывести необходимо: идентификатор урока; дату и время начала урока; тип урока; лейбл (тег), который поможет отличить утренние уроки от вечерних.
sql
SELECT
id,
start_time,
lesson_type,
CASE
WHEN EXTRACT(HOUR FROM start_time) >= 7 AND EXTRACT(HOUR FROM start_time) < 10 THEN 'morning'
WHEN EXTRACT(HOUR FROM start_time) >= 17 AND EXTRACT(HOUR FROM start_time) < 20 THEN 'evening'
END AS label
FROM
lessons
WHERE
start_time >= '2016-01-02'
AND start_time < '2017-01-01'
AND EXTRACT(YEAR FROM start_time) = 2016
AND EXTRACT(HOUR FROM start_time) >= 7 AND EXTRACT(HOUR FROM start_time) < 10
OR EXTRACT(HOUR FROM start_time) >= 17 AND EXTRACT(HOUR FROM start_time) < 20
AND duration > 0
AND status IS NOT NULL
LIMIT 101;
Здесь мы выбираем все уроки с идентификатором, датой и временем начала урока, типом урока и меткой (тегом), который указывает, является ли урок утренним или вечерним. Метка определяется на основе времени начала урока.
Затем мы применяем несколько условий:
- Сначала мы выбираем только уроки, которые начались с 7:00 до 9:59 или с 17:00 до 19:59, используя функцию `EXTRACT` для получения часа из даты и времени.
- Затем мы исключаем уроки с отрицательной длительностью, проверяя, что значение `duration` больше 0.
- Затем мы исключаем уроки, у которых нет информации о статусе, проверяя, что значение `status` не равно NULL.
- Затем мы ограничиваем вывод до первых 101 урока.
Заметьте, что мы указываем время начала урока, чтобы исключить 1 января 2016 года из результатов выборки.
Этот запрос вернет результат, удовлетворяющий всем указанным условиям, и выведет первые 101 урок в 2016 году. Каждому уроку будет присвоена метка 'morning' или 'evening' в зависимости от времени начала урока.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет