Zacznij terazZacznij za darmo

Znajdź brakujące daty

Funkcja generate_series() może być przydatna do wykrywania brakujących dat.

Przypomnij sobie:

generate_series(from, to, interval)

gdzie from i to to daty lub znaczniki czasu, a interval można podać jako ciąg znaków z liczbą i jednostką czasu, np. '1 month'.

Czy w danych Evanston 311 istnieją dni, w których nie złożono żadnych zgłoszeń?

To ćwiczenie jest częścią kursu

Eksploracyjna analiza danych w SQL

Zobacz kurs

Instrukcje do ćwiczenia

  1. Napisz podzapytanie z użyciem generate_series(), które zwróci wszystkie daty pomiędzy min() a max() kolumny date_created w tabeli evanston311.
  2. Napisz kolejne podzapytanie, które wybierze wszystkie wartości date_created jako daty z tabeli evanston311.
  3. Oba podzapytania powinny zwracać wartości typu date (zwróć uwagę na operator ::).
  4. Wybierz daty (day) z pierwszego podzapytania, które NOT IN wynikach drugiego podzapytania. W ten sposób uzyskasz dni, których nie ma w kolumnie date_created.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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);
Edytuj i uruchom kod