ORDER BY внутри OVER задаёт порядок вычисления оконной функции, но не гарантирует порядок строк в итоговом результате. Для вывода нужен отдельный внешний ORDER BY.
[имя] спросил: Объясни, как здесь работает ORDER BY — тот, что используется внутри оконной функции OVER, отличается ли он от общего порядка выполнения запроса?
ORDER BY внутри OVER задаёт порядок вычисления оконной функции, но не гарантирует порядок строк в итоговом результате. Для вывода нужен отдельный внешний ORDER BY.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
ORDER BY внутри OVER задаёт порядок вычисления оконной функции, но не гарантирует порядок строк в итоговом результате. Для вывода нужен отдельный внешний ORDER BY.
Например, row_number() over (order by score desc) присваивает номера по score, однако финальный SELECT может выдать строки иначе. PARTITION BY при этом разделяет строки на независимые группы окна, не сворачивая их как GROUP BY. Для агрегатных окон также важна рамка ROWS или RANGE: строки с равными значениями могут обрабатываться по-разному. Точный результат конкретного запроса зависит от его функции, рамки и полного выражения сортировки.