Поиск пропущенных дат
Функция generate_series() удобна для поиска пропущенных дат.
Напомним синтаксис:
generate_series(from, to, interval)
где from и to — даты или временные метки, а interval задаётся в виде строки с числом и единицей времени, например '1 month'.
Есть ли в данных Evanston 311 дни, в которые не было создано ни одной заявки?
Это упражнение является частью курса
Разведочный анализ данных в SQL
Инструкции к упражнению
- Напишите подзапрос с функцией
generate_series(), который возвращает все даты в диапазоне отmin()доmax()значенийdate_createdв таблицеevanston311. - Напишите второй подзапрос, который выбирает все значения
date_createdв виде дат из таблицыevanston311. - Оба подзапроса должны возвращать значения типа
date(обратите внимание на::). - Выберите даты (
day) из первого подзапроса, которыеNOT INрезультатах второго. Это позволит найти дни, отсутствующие вdate_created.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
SELECT day
-- 1) Subquery to generate all dates
-- from min to max date_created
FROM (SELECT generate_series(___(___),
___(___),
___)::___ AS day
-- What table is date_created in?
FROM ___) AS all_dates
-- 4) Select dates (day from above) that are NOT IN the subquery
WHERE day ___
-- 2) Subquery to select all date_created values as dates
(SELECT ___::___
FROM evanston311);