Перейти к содержанию

Встроенные оконные функции

Встроенные оконные функции могут использоваться только вместе с выражением OVER. На текущий момент поддерживается только ROW_NUMBER().

Синтаксис

ROW_NUMBER ( )

ROW_NUMBER

Функция row_number() присваивает каждой строке номер в текущем разделе. Нумерация начинается с 1 в порядке, определенном выражением ORDER BY в определении окна, либо в произвольном порядке, если ORDER BY отсутствует.

Пример

CREATE TABLE t0(x INTEGER PRIMARY KEY, y TEXT);
INSERT INTO t0 VALUES (1, 'aaa'), (2, 'ccc'), (3, 'bbb');

SELECT x, y, row_number() OVER (ORDER BY y) FROM t0 ORDER BY x;

 x |  y  | col_1
---+-----+-------
 1 | aaa | 1
 2 | ccc | 3
 3 | bbb | 2

Функция row_number() присваивает каждой строке номер в порядке, заданном выражением ORDER BY внутри определения окна (в данном случае ORDER BY y). При этом, ORDER BY внутри OVER влияет только на нумерацию строк, но не изменяет порядок итогового вывода, который определяется ORDER BY в операторе SELECT (в данном случае ORDER BY x).