Оконные функции выполняют вычисления над набором строк связанных с текущей строкой, не свёртывая результат в одну выходную строку. Это отличает их от агрегирующих функций, которые сокращают несколько строк в одну.
OVER() предложение для определения "окна" — подмножества строк, над которыми работает функцияPARTITION BY для разделения данных на группы и ORDER BY для определения порядка строк в каждой партицииSELECT
employee_id,
salary,
SUM(salary) OVER (PARTITION BY department_id ORDER BY hire_date) AS running_total
FROM employees;
RANK(), DENSE_RANK() или ROW_NUMBER() для присвоения позиций в партицииLAG() и LEAD() для доступа к значениям из предыдущих или следующих строкОконные функции необходимы для аналитических запросов, когда тебе нужны детальные данные и агрегированные показатели одновременно в одном результирующем наборе — это иначе потребовало бы сложных подзапросов или self-join'ов.
Оконные функции сохраняют все исходные строки в результирующем наборе, одновременно выполняя вычисления по связанным строкам, в отличие от агрегирующих функций, которые объединяют несколько строк в один результат.
Новый — ещё не проверен сообществом
Вы