ROW_NUMBER() em SQL com exemplos práticos
Veja como numerar registros, selecionar o primeiro de cada grupo, remover duplicidades e criar paginação com ROW_NUMBER().
Numeração básica
SELECT
id,
nome,
ROW_NUMBER() OVER (ORDER BY nome) AS numero
FROM alunos;
O resultado recebe uma numeração sequencial conforme a ordenação informada.
Reiniciar por grupo
SELECT
turma_id,
nome,
ROW_NUMBER() OVER (
PARTITION BY turma_id
ORDER BY nome
) AS ordem_na_turma
FROM alunos;
Selecionar uma linha por grupo
WITH ranked AS (
SELECT
p.*,
ROW_NUMBER() OVER (
PARTITION BY cliente_id
ORDER BY data_pedido DESC, id DESC
) AS rn
FROM pedidos p
)
SELECT *
FROM ranked
WHERE rn = 1;
Identificar duplicados mantendo um registro
WITH ranked AS (
SELECT
a.*,
ROW_NUMBER() OVER (
PARTITION BY cpf
ORDER BY id
) AS rn
FROM alunos a
)
SELECT *
FROM ranked
WHERE rn > 1;
Cuidado: revise o resultado antes de transformar essa consulta em uma exclusão.
Assuntos:ROW_NUMBERwindow functionpaginação