Comparație lună peste lună
Pentru a compara lunile, trebuie să folosești una dintre următoarele funcții de fereastră:
LAG(value, offset), care returnează o valoare de la un număr offset de rânduri anterioare rândului curent din raport.LEAD(value, offset), care returnează o valoare de la un număr offset de rânduri ulterioare rândului curent din raport.
Scopul tău este să construiești un raport care să afișeze vizualizările lunare ale fiecărei țări, lună peste lună. Câteva indicații:
- Va trebui să grupezi datele calendaristice pe luni. Pentru aceasta, poți folosi funcția
DATE_PART(). - Poți calcula variația procentuală folosind formula:
(value)/(previous_value) - 1. - Dacă nu este inclus niciun offset în funcțiile
LAG()sauLEAD(), valoarea implicită va fi 1.
Deoarece tabelul se oprește la mijlocul lunii iunie, interogarea este configurată să includă doar datele până la sfârșitul lunii mai.
Acest exercițiu face parte din cursul
Raportare în SQL
Instrucțiuni pentru exercițiu
- Din
web_data, extragecountry_idși folosește funcțiaDATE_PART()pentru a crea câmpulmonth. - Creează
month_viewscare să calculeze totalul vizualizărilor din luna respectivă. - Creează
previous_month_viewscare să extragă totalul vizualizărilor din luna anterioară pentru țara respectivă. - Creează câmpul
perc_changecare calculează variația procentuală a lunii curente față de luna anterioară pentru țara respectivă, unde o valoare negativă reprezintă o scădere a vizualizărilor, iar una pozitivă reprezintă o creștere.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
SELECT
-- Pull month and country_id
____ AS month,
____,
-- Pull in current month views
____ AS month_views,
-- Pull in last month views
____ AS previous_month_views,
-- Calculate the percent change
____ AS perc_change
FROM ____
WHERE date <= '2018-05-31'
GROUP BY ____;