Объясните, как работают оконные функции в SQL и сравните их с обычными агрегатными функциями по тому, как они обрабатывают строки и формируют результаты запросов. Также опишите, когда каждая из них уместна в реальных сценариях запросов, включая любые последствия для чтения, фильтрации или представления данных, возвращаемых в код приложения.

Обычная агрегация сворачивает строки в группы, а оконная функция сохраняет строки и добавляет вычисление по связанному набору, заданному OVER.

Короткий ответ

Что ответить на собеседовании

Обычная агрегация сворачивает строки в группы, а оконная функция сохраняет строки и добавляет вычисление по связанному набору, заданному OVER.

Подробный разбор

Ответ с пояснениями

Обычная агрегация сворачивает строки в группы, а оконная функция сохраняет строки и добавляет вычисление по связанному набору, заданному OVER.

SUM(amount) с GROUP BY customer_id возвращает итог на клиента; SUM(amount) OVER (PARTITION BY customer_id) повторяет этот итог рядом с каждой покупкой. ROW_NUMBER полезен для ранжирования, LAG — для сравнения с предыдущей строкой. Для фильтра по вычисленному номеру в PostgreSQL используют внешний запрос или CTE. ORDER BY внутри окна не гарантирует порядок итогового ответа: для отображения задайте внешний ORDER BY. Рамка окна особенно важна для накопительных сумм.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее