Ограничение оконных функций ROWS: Часть 2
Теперь посмотрим, как работают UNBOUNDED PRECEDING и UNBOUNDED FOLLOWING.
Перейдем сразу к практике: UNBOUNDED PRECEDING
Давайте посчитаем средний возраст питомцев внутри одного вида, взяв окно с первого питомца до текущего по списку, отсортированному по возрастанию весов животных. В этом запросе нам помогут ключевые слова BETWEEN, CURRENT ROW, а также UNBOUNDED PRECEDING.
SELECT kind,
name,
weight,
age,
AVG(age) OVER (PARTITION BY kind ORDER BY weight
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
FROM animals
А что насчет UNBOUNDED FOLLOWING?
UNBOUNDED FOLLOWING работает примерно так же, как UNBOUNDED PRECEDING. Посчитаем средний возраст питомцев внутри одного вида, взяв окно с текущего питомца до последнего по отсортированному по возрастанию весов животных списку. Для этого нам нужно использовать ключевые слова BETWEEN, CURRENT ROW (с которыми мы уже отлично подружились), а также UNBOUNDED FOLLOWING.
SELECT kind,
name,
weight,
age,
AVG(age) OVER (PARTITION BY kind ORDER BY weight
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
FROM animals
Пишите в комментариях, какую оконную функцию разобрать следующей, и оставляйте реакцию, если вам нравится цикл постов про SQL!
#leftjoin_sql