CommencezCommencez gratuitement

Repérer les dates manquantes

La fonction generate_series() peut servir à repérer les dates manquantes.

Rappel :

generate_series(from, to, interval)

from et to sont des dates ou des timestamps, et interval peut être donné sous forme de chaîne avec un nombre et une unité de temps, par exemple '1 month'.

Y a‑t‑il des jours, dans les données 311 d'Evanston, pour lesquels aucune demande n'a été créée ?

Cette activité fait partie du cours

Analyse exploratoire des données en SQL

Voir le cours

Instructions de l’exercice

  1. Écrivez une sous-requête avec generate_series() pour obtenir toutes les dates entre les valeurs min() et max() de date_created dans evanston311.
  2. Rédigez une autre sous-requête pour sélectionner toutes les valeurs de date_created en tant que dates à partir de evanston311.
  3. Les deux sous-requêtes doivent produire des valeurs de type date (repérez le ::).
  4. Sélectionnez les dates (day) de la première sous-requête qui ne sont NOT IN les résultats de la deuxième sous-requête. Vous obtiendrez ainsi les jours absents de date_created.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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);
Modifier et exécuter le code