As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Função de janela ROW_NUMBER
Determina o número ordinal da linha atual em um grupo de linhas, começando com 1, com base na expressão ORDER BY da cláusula OVER. Se a cláusula opcional PARTITION BY estiver presente, os números ordinais são redefinidos para cada grupo de linhas. As linhas com valores iguais para as expressões ORDER BY recebem os diferentes números de linha de forma não determinística.
Sintaxe
ROW_NUMBER () OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list ] )
Argumentos
- ( )
-
A função não aceita argumentos, mas os parênteses vazios são necessários.
- OVER
-
As cláusulas de janela para a função ROW_NUMBER.
- PARTITION BY expr_list
-
Opcional. Uma ou mais expressões que definem a função ROW_NUMBER.
- ORDER BY order_list
-
Opcional. A expressão que define as colunas nas quais os números de linha se baseiam. Se nenhuma PARTITION BY for especificada, ORDER BY usa a tabela completa.
Se ORDER BY não produzir uma ordenação exclusiva ou for omitido, a ordem das linhas será não determinística. Para obter mais informações, consulte Ordenação exclusiva de dados para funções da janela.
Tipo de retorno
BIGINT
Exemplos
O seguinte exemplo particiona a tabela por SELLERID e ordena cada partição por QTY (na ordem ascendente) e, então, atribui um número de linha para cada linha. Os resultados são classificados após a aplicação dos resultados da função de janela.
select salesid, sellerid, qty, row_number() over (partition by sellerid order by qty asc) as row from winsales order by 2,4; salesid | sellerid | qty | row ---------+----------+-----+----- 10006 | 1 | 10 | 1 10001 | 1 | 10 | 2 10005 | 1 | 30 | 3 20001 | 2 | 20 | 1 20002 | 2 | 20 | 2 30001 | 3 | 10 | 1 30003 | 3 | 15 | 2 30004 | 3 | 20 | 3 30007 | 3 | 30 | 4 40005 | 4 | 10 | 1 40001 | 4 | 40 | 2 (11 rows)
Para uma descrição da tabela WINSALES, consulte Amostra de tabela para exemplos de funções de janela.