Сравнение по месяцам
Для сравнения данных по месяцам используйте одну из следующих оконных функций:
LAG(value, offset)— возвращает значение из строки, расположенной на offset позиций выше текущей строки в отчёте.LEAD(value, offset)— возвращает значение из строки, расположенной на offset позиций ниже текущей строки в отчёте.
Ваша задача — построить отчёт, отображающий помесячную динамику просмотров по каждой стране. Несколько полезных советов:
- Даты нужно сгруппировать по месяцам. Для этого используйте функцию
DATE_PART(). - Процентное изменение можно рассчитать по следующей формуле:
(value)/(previous_value) - 1. - Если значение offset не указано в функциях
LAG()илиLEAD(), по умолчанию оно равно 1.
Поскольку таблица обрывается в середине июня, запрос настроен так, чтобы включать данные только до конца мая.
Это упражнение является частью курса
Отчётность в SQL
Инструкции к упражнению
- Из таблицы
web_dataизвлекитеcountry_idи с помощью функцииDATE_PART()создайте полеmonth. - Создайте поле
month_views, которое содержит суммарное количество просмотров за месяц. - Создайте поле
previous_month_views, которое содержит суммарное количество просмотров за предыдущий месяц для соответствующей страны. - Создайте поле
perc_change, которое вычисляет процентное изменение числа просмотров текущего месяца относительно предыдущего для каждой страны: отрицательное значение означает снижение просмотров, положительное — рост.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
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 ____;