SUM() OVER (ORDER BY...) считает не то, что вы думаете: кадр оконной функции

Привет, Хабр! SUM() OVER (ORDER BY ...) часто выглядит как очевидный способ посчитать нарастающий итог, пока в данных не появляются одинаковые значения ключа сортировки. В этот момент результат начинает «прыгать», LAST_VALUE возвращает текущую строку, а запрос формально остаётся корректным. В статье разбираем скрытую причину таких сюрпризов — кадр оконной функции: как база подставляет его по умолчанию, чем ROWS отличается от RANGE и какие детали стоит проверять, чтобы аналитические SQL‑запросы считали именно то, что вы ожидали.

https://habr.com/ru/companies/otus/articles/1036212/

#SQL #оконные_функции #window_functions #ROWS #RANGE #PostgreSQL #нарастающий_итог #LAST_VALUE #кадр_окна #аналитические_запросы

SUM() OVER (ORDER BY...) считает не то, что вы думаете: кадр оконной функции

Привет, Хабр! Оконные функции — главный инструмент аналитика в SQL: нарастающие итоги, ранги, скользящие средние, сравнение строки с соседями. И почти каждый, кто ими пользуется,...

Хабр