НачатьНачать бесплатно

Поиск пропущенных дат

Функция generate_series() удобна для поиска пропущенных дат.

Напомним синтаксис:

generate_series(from, to, interval)

где from и to — даты или временные метки, а interval задаётся в виде строки с числом и единицей времени, например '1 month'.

Есть ли в данных Evanston 311 дни, в которые не было создано ни одной заявки?

Это упражнение является частью курса

Разведочный анализ данных в SQL

Посмотреть курс

Инструкции к упражнению

  1. Напишите подзапрос с функцией generate_series(), который возвращает все даты в диапазоне от min() до max() значений date_created в таблице evanston311.
  2. Напишите второй подзапрос, который выбирает все значения date_created в виде дат из таблицы evanston311.
  3. Оба подзапроса должны возвращать значения типа date (обратите внимание на ::).
  4. Выберите даты (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);
Редактировать и запускать код