Aan de slagGa gratis aan de slag

Maandelijks gemiddelde met ontbrekende datums

Zoek het gemiddelde aantal aangemaakte Evanston 311-verzoeken per dag voor elke maand in de gegevens.

Negeer dit keer geen datums zonder verzoeken.

Deze oefening maakt deel uit van de cursus

Exploratory Data Analysis in SQL

Cursus bekijken

Oefeninstructies

  • Genereer een reeks datums van 2016-01-01 tot 2018-06-30.
  • Join de reeks met een subquery om het aantal per dag aangemaakte verzoeken te tellen.
  • Gebruik date_trunc() om maanden te krijgen op basis van date, dat alle datums bevat, NIET day.
  • Gebruik coalesce() om NULL-waarden in count te vervangen door 0. Bereken het gemiddelde van deze waarde.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

-- generate series with all days from 2016-01-01 to 2018-06-30
WITH all_days AS 
     (SELECT generate_series(___,
                             ___,
                             ___::___) AS date),
     -- Subquery to compute daily counts
     daily_count AS 
     (SELECT date_trunc('day', date_created) AS day,
             count(*) AS count
        FROM evanston311
       GROUP BY day)
-- Aggregate daily counts by month using date_trunc
SELECT ___ AS month,
       -- Use coalesce to replace NULL count values with 0
       avg(coalesce(___, ___)) AS average
  FROM all_days
       LEFT JOIN daily_count
       -- Joining condition
       ON all_days.___=daily_count.___
 GROUP BY month
 ORDER BY month; 
Code bewerken en uitvoeren