Окно задаётся через OVER: PARTITION BY разделяет строки на группы, ORDER BY задаёт порядок внутри группы, а ROWS/RANGE/GROUPS определяет рамку вычисления.
Опиши оконные функции в максимально расширенном виде: какие ключевые слова используются и за что каждое отвечает.
Окно задаётся через OVER: PARTITION BY разделяет строки на группы, ORDER BY задаёт порядок внутри группы, а ROWS/RANGE/GROUPS определяет рамку вычисления.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Окно задаётся через OVER: PARTITION BY разделяет строки на группы, ORDER BY задаёт порядок внутри группы, а ROWS/RANGE/GROUPS определяет рамку вычисления.
Пример: SUM(amount) OVER (PARTITION BY client_id ORDER BY created_at, id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW). Это накопительная сумма от начала группы до текущей строки. Границы могут быть PRECEDING, FOLLOWING и UNBOUNDED; GROUPS и RANGE учитывают группы равных значений иначе, чем ROWS. Оконная функция сохраняет строки, в отличие от GROUP BY. Рамка по умолчанию зависит от ORDER BY, поэтому для LAST_VALUE и накоплений её лучше задавать явно.