OVER (оконные функции)
Ключевое слово, превращающее агрегатную функцию в оконную — вычисляет значение без схлопывания строк.
function() OVER ([PARTITION BY col] [ORDER BY col] [frame])Объяснение
Пример
-- Нарастающая сумма продаж по дате
SELECT
date,
sales,
SUM(sales) OVER (ORDER BY date) AS running_total
FROM daily_sales;Связанные термины
Анекдоты по теме
Программист видит оконную функцию первый раз: ROW_NUMBER() OVER (PARTITION BY dept ORDER BY salary DESC) — Это что, GROUP BY внутри ORDER BY внутри OVER? — Добро пожаловать в мир аналитических запросов.
— Доктор, у меня шизофрения. — Это лечится. Расскажите подробно. — WITH моей_личности AS (SELECT боль, радость, тревогу, ROW_NUMBER() OVER (PARTITION BY день_недели ORDER BY кофеин DESC) FROM психика)... Ой, кажется, я только что создал три новых партиции самосознания.
— Зачем нужен PARTITION BY? — Это GROUP BY для оконных функций. Но без схлопывания. — Пример? — SUM(salary) OVER (PARTITION BY department) — сумма зарплат по отделу для каждой строки.