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
Instrukcje do ćwiczenia
- Napisz podzapytanie z użyciem
generate_series(), które zwróci wszystkie daty pomiędzymin()amax()kolumnydate_createdw tabelievanston311. - Napisz kolejne podzapytanie, które wybierze wszystkie wartości
date_createdjako daty z tabelievanston311. - Oba podzapytania powinny zwracać wartości typu
date(zwróć uwagę na operator::). - Wybierz daty (
day) z pierwszego podzapytania, któreNOT INwynikach drugiego podzapytania. W ten sposób uzyskasz dni, których nie ma w kolumniedate_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);