ORDER BY внутри OVER задаёт порядок вычисления окна, а внешний ORDER BY — порядок выдачи строк. Одно не гарантирует другое.
Как связаны сортировка внутри оконной функции и итоговая сортировка ORDER BY в запросе?
ORDER BY внутри OVER задаёт порядок вычисления окна, а внешний ORDER BY — порядок выдачи строк. Одно не гарантирует другое.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
ORDER BY внутри OVER задаёт порядок вычисления окна, а внешний ORDER BY — порядок выдачи строк. Одно не гарантирует другое.
Например, SUM(amount) OVER (PARTITION BY client_id ORDER BY dt) считает накопление внутри клиента. Вывод при этом может быть отсортирован совершенно иначе или не иметь гарантированного порядка.
Для стабильного результата задайте внешний ORDER BY. При равных датах уточните дополнительные ключи и рамку ROWS или RANGE: это влияет на вычисление накопительной суммы. Сортировка для отображения не должна случайно определять бизнес-смысл окна.