ROW_NUMBER (Português)
Sintaxe
Descrição do ilustração row_number.gif
Consulte também:
“Funções analíticas” para obter informações sobre sintaxe, semântica e restrições
Objetivo
ROW_NUMBER
é uma função analítica. Ele atribui um número único a cada linha à qual é aplicado (seja cada linha na partição ou cada linha retornada pela consulta), na seqüência ordenada de linhas especificada no order_by_clause
, começando com 1.
Aninhando uma subconsulta usando ROW_NUMBER
dentro de uma consulta que recupera os ROW_NUMBER
valores para um intervalo especificado, você pode encontrar um subconjunto preciso de linhas dos resultados da consulta interna. Esse uso da função permite implementar relatórios N superior, N inferior e N interno. Para resultados consistentes, a consulta deve garantir uma ordem de classificação determinística.
Você não pode usar ROW_NUMBER
ou qualquer outra função analítica para expr
. Ou seja, você não pode aninhar funções analíticas, mas pode usar outras expressões de função integradas para expr
. Consulte “Sobre as Expressões SQL” para obter informações sobre os formulários válidos de expr
.
Exemplos
Para cada departamento na tabela de exemplo oe.employees
, o exemplo a seguir atribui números a cada linha na ordem da data de contratação do funcionário:
ROW_NUMBER
é um função não determinística. No entanto, employee_id
é uma chave única, portanto, os resultados desta aplicação da função são determinísticos.
Consulte também:
FIRST_VALUE e LAST_VALUE para exemplos de comportamento não determinístico
A consulta de N interno a seguir seleciona todas as linhas da tabela employees
, mas retorna apenas o quinquagésimo primeiro a um- centésima linha:
SELECT last_name FROM (SELECT last_name, ROW_NUMBER() OVER (ORDER BY last_name) R FROM employees) WHERE R BETWEEN 51 and 100;