Параметры оконных функций: PARTITION BY и ORDER BY
Этот пост – продолжение серии постов про оконные функции (предыдущий пост был введением). Сегодня мы обсудим два необязательных параметра оконки: PARTITION BY и ORDER BY.
Разбираемся подробнее
Оба параметра помогают нам точнее определить порядок и алгоритм работы запроса: один отвечает за группировку данных, а другой – за сортировку.
Предложение PARTITION BY определяет столбец, по которому будет производиться разбиение на окна. Суть в том, чтобы разбить столбец на разные категории и посчитать некоторые метрики в рамках полученных групп (например, если вам нужно сравнить вес котика с остальными котиками, но не с попугаями или песиками).
Вместе с PARTITION BY может применяться предложение ORDER BY, которое определяет порядок сортировки внутри окна. Порядок сортировки очень важен, ведь оконная функция будет обрабатывать данные согласно этому порядку (например, чтобы сравнить, насколько котик тяжелее предыдущего по весу, нужно их всех отсортировать внутри окна). Если вы не используете предложение PARTITION BY, а только ORDER BY, то окном будет весь набор данных.
Давайте вместе потренируемся в написании запросов с использованием ORDER BY и PARTITION BY. Итак, возьмем таблицу animals (на картинке), которая содержит вид животного, его имя, вес и возраст, и попробуем решить следующую задачу: определить насколько процентов каждое животное старше среднего по группе.
Пишите в комментариях, как должен выглядеть запрос, а мы опубликуем правильный ответ завтра!
#leftjoin_sql