Hledání chybějících dat
Funkce generate_series() se hodí při hledání chybějících dat.
Připomenutí:
generate_series(from, to, interval)
kde from a to jsou datum nebo timestamp a interval lze zapsat jako řetězec s číslem a časovou jednotkou, například '1 month'.
Existují v datech Evanston 311 nějaké dny, kdy nebyl vytvořen žádný požadavek?
Toto cvičení je součástí kurzu
Průzkumná analýza dat v SQL
Pokyny k cvičení
- Napiš poddotaz s funkcí
generate_series(), který vrátí všechna data mezimin()amax()hodnoty sloupcedate_createdv tabulceevanston311. - Napiš další poddotaz, který vybere všechny hodnoty sloupce
date_createdjako data z tabulkyevanston311. - Oba poddotazy by měly vracet hodnoty typu
date(hledej::). - Z prvního poddotazu vyber data (
day), která nejsouNOT INvýsledcích druhého poddotazu. Takto získáš dny, které se vdate_creatednevyskytují.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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);