Что такое оконные функции и где они лучше GROUP BY?
Оконная функция считает по набору строк, связанному с текущей, не схлопывая их, поэтому детализация строки сохраняется рядом с агрегатом. Это делает их правильным инструментом для нарастающих итогов, ранжирования внутри партиции, сравнения строки со средним по группе и сопоставления соседних событий через lag/lead. GROUP BY заставил бы агрегировать, а затем джойнить обратно к детализации — больше кода, больше перемешивания и выше шанс ошибиться.