SQLLab
Глоссарий/OVER (оконные функции)
Оконные функцииСредний

OVER (оконные функции)

Ключевое слово, превращающее агрегатную функцию в оконную — вычисляет значение без схлопывания строк.

Синтаксис
function() OVER ([PARTITION BY col] [ORDER BY col] [frame])

Объяснение

Оконные функции вычисляют значение для каждой строки с учётом «окна» соседних строк. В отличие от GROUP BY, строки не группируются. Синтаксис: функция OVER (PARTITION BY ... ORDER BY ... ROWS/RANGE BETWEEN ...) Выполняются после WHERE, GROUP BY, HAVING — поэтому нельзя фильтровать по их результату в WHERE. Нужен подзапрос или CTE.

Пример

-- Нарастающая сумма продаж по дате
SELECT
  date,
  sales,
  SUM(sales) OVER (ORDER BY date) AS running_total
FROM daily_sales;