Оконные функции в PostgreSQL позволяют реализовать пагинацию результатов. 3 Это гибкий и стандартизированный метод. 3 Однако для запросов типа «топ-N» оконные функции можно использовать только в PostgreSQL версии 15 и выше. 3
Пример использования оконной функции ROW_NUMBER() для пагинации: 3
SELECT * FROM ( SELECT sales.*, ROW_NUMBER() OVER (ORDER BY sale_date DESC, sale_id DESC) rn FROM sales ) tmp WHERE rn between 11 and 20 ORDER BY sale_date DESC, sale_id DESC; 3
В этом примере функция ROW_NUMBER() нумерует строки в соответствии с порядком сортировки, определённым в предложении OVER. 3 Внешнее предложение WHERE использует это перечисление, чтобы ограничить результат второй страницей (строки с 11 по 20). 3
Оконные функции применяются к группе строк, связанной с текущим рядом, и позволяют выполнять вычисления без сводки данных в одну строку. 4