Канал Николая Валиотти об аналитике и визуализации данных, data science и BI
SELECT функция (столбец для вычислений) OVER ( [PARTITION BY столбец для формирования окна] [ORDER BY столбец для сортировки] [ROWS или RANGE выражение для ограничения строк в пределах группы] )Для лучшего понимания работы оконных функций стоит вспомнить о порядке выполнения запроса: так как оконные функции выполняются в блоке SELECT, то все вычисления в них происходят после возможной фильтрации и/или группировки. То есть, если в таблице с домашними животными указать WHERE animal = ‘cat’, то оконные функции будут оперировать только котиками, а попугаи и пёсики в их расчёты не попадут. Интересная особенность Можно не использовать опциональные конструкции и получить аналогичный обыкновенной агрегации результат. Сравните:
SELECT SUM(amount) OVER() AS total_amount FROM AVS
SELECT SUM(amount) AS total_amount FROM AОба запроса выдадут один и тот же результат. Но в первом случае мы можем дополнительно сразу выбрать другие поля, не участвующие в агрегации, в то время как второй вариант (классическая агрегация) такого не допускает. Итак, в квадратных скобках обозначены необязательные параметры. Однако, вся суть в том, чтобы указать их для получения иного, разбитого по “окнам” результата. Поговорим про них отдельно? #leftjoin_sql