Агрегатные функции (например, SUM, AVG, COUNT) схлопывают несколько строк в одну результирующую строку на группу, уменьшая общее количество возвращаемых строк.
Оконные функции выполняют вычисления над связанным набором строк, но сохраняют каждую строку в результирующем наборе, возвращая значение для каждой отдельной строки.
Агрегатные функции с GROUP BY:
SELECT department, SUM(salary)
FROM employees
GROUP BY department;
Оконные функции с OVER():
SELECT name, department, SUM(salary) OVER(PARTITION BY department)
FROM employees;
OVER() определяет область видимости оконной функции, избавляя от необходимости использовать GROUP BYPARTITION BY разбивает строки на группы внутри окна, аналогично GROUP BY в агрегатахORDER BY внутри OVER() управляет порядком вычисления в каждом разделеROW_NUMBER(), RANK(), LAG() и LEAD()Оконные функции сохраняют все строки в результирующем наборе, добавляя вычисленные значения, в то время как агрегирующие функции сокращают несколько строк в одну сводную строку для каждой группы.
Новый — ещё не проверен сообществом
Вы