При использовании оконных рам всегда включайте оба конца рамки.
Рамка rows 2 following
неоднозначна.Вы имеете в виду rows between current row and 2 following
или rows between 2 following and unbounded following
?У каждого из них есть проблемы.
Первое недопустимо, поскольку начало кадра должно появляться до его окончания:
Ограничения: frame_start не может быть UNBOUNDED FOLLOWING, frame_end не может быть UNBOUNDED PRECEDINGи выбор frame_end не может появиться раньше в списке выше, чем выбор frame_start.
Кроме того, когда включена только одна временная спецификация для кадра, она включается в качестве начала кадра.
Итак, Postgres интерпретирует 2 following
как начало кадра.Но по умолчанию для конца используется текущая строка, поэтому она интерпретируется как rows between 2 following and current row
.Следовательно, выдается сообщение об ошибке:
42P20: кадр, начинающийся со следующей строки, не может заканчиваться текущей строкой