Encontrando os registros do Top-N
Obtenha os valores mais altos e mais baixos.
Encontrando os registros do Top-N é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.
O que é uma consulta dos N primeiros
Uma consulta dos N primeiros responde a perguntas como "os 3 produtos mais caros", "os 10 pedidos mais recentes" ou "as 5 menores pontuações".
Ela consiste apenas em ordenar e limitar, mas é tão comum que merece um nome.
-- Top 3 most expensive products
SELECT name, price
FROM products
ORDER BY price DESC
LIMIT 3;Registros dos N menores
Para obter os menores valores, inverta a direção. Ordene com ASC e pegue os primeiros N para obter as linhas mais baratas, mais antigas ou de menor valor.
-- 5 cheapest products
SELECT name, price
FROM products
ORDER BY price ASC
LIMIT 5;Adicionando um critério de desempate
Se várias linhas tiverem o mesmo valor de corte, o banco de dados escolherá entre elas de forma arbitrária. Adicione uma chave secundária única para que o resultado seja estável e reproduzível.
SELECT id, name, price
FROM products
ORDER BY price DESC, id
LIMIT 3;N primeiros após a filtragem
A consulta dos N primeiros atua sobre o conjunto filtrado. Coloque primeiro uma cláusula WHERE para restringir os candidatos e, em seguida, ordene e limite.
Isso encontra os 3 produtos mais caros da categoria 'Livros'.
SELECT name, price
FROM products
WHERE category = 'Books'
ORDER BY price DESC
LIMIT 3;N primeiros após a agregação
Você também pode classificar valores calculados. Agrupe, agregue, depois ordene o valor agregado e limite.
Isso retorna os 5 clientes que mais gastaram no total.
SELECT customer_id, SUM(total) AS spent
FROM orders
GROUP BY customer_id
ORDER BY spent DESC
LIMIT 5;A abordagem das funções de classificação
Funções de janela como ROW_NUMBER() atribuem uma classificação a cada linha. Envolva a consulta e mantenha as linhas cuja classificação seja pequena. Essa abordagem também funciona para os "N primeiros por grupo".
SELECT name, price
FROM (
SELECT name, price,
ROW_NUMBER() OVER (ORDER BY price DESC) AS rn
FROM products
) ranked
WHERE rn <= 3;RANK versus ROW_NUMBER em caso de empate
ROW_NUMBER() sempre atribui números distintos, portanto retorna exatamente N linhas mesmo em caso de empate. RANK() atribui o mesmo número às linhas empatadas, portanto os "3 primeiros" podem retornar mais de 3 linhas se houver empate na terceira posição.
SELECT name, price,
RANK() OVER (ORDER BY price DESC) AS rnk
FROM products;N primeiros por grupo
Para obter o produto principal de cada categoria, particione a classificação por categoria. PARTITION BY reinicia a numeração para cada grupo.
SELECT category, name, price
FROM (
SELECT category, name, price,
ROW_NUMBER() OVER (
PARTITION BY category
ORDER BY price DESC
) AS rn
FROM products
) t
WHERE rn = 1;DISTINCT ON para uma linha por grupo
O PostgreSQL oferece DISTINCT ON, uma forma compacta de escolher a primeira linha de cada grupo. Liste a coluna de agrupamento e depois ordene de modo que a linha desejada apareça primeiro dentro de cada grupo.
SELECT DISTINCT ON (category)
category, name, price
FROM products
ORDER BY category, price DESC;Incluindo empates com WITH TIES
Se você quiser os 3 primeiros e também todas as linhas empatadas com a terceira, use o FETCH ... WITH TIES padrão. Ele retorna 3 linhas, além das linhas extras empatadas com a última.
SELECT name, price
FROM products
ORDER BY price DESC
FETCH FIRST 3 ROWS WITH TIES;Um único valor do topo
Para obter apenas a linha de maior ou menor valor, ORDER BY ... LIMIT 1 é o padrão mais simples, mais claro e muitas vezes mais rápido do que uma subconsulta com MAX().
-- The single most recent order
SELECT id, total, created_at
FROM orders
ORDER BY created_at DESC
LIMIT 1;Verificação rápida
Você quer os 3 maiores preços, mas, se houver empate na terceira posição, quer incluir todos eles.
Recapitulação
Agora você consegue encontrar registros entre os N primeiros de todas as formas importantes:
ORDER BY ... LIMIT npara listas simples dos maiores ou menores valores- Adicione um critério de desempate único para obter resultados estáveis
ROW_NUMBER()ouDISTINCT ONpara os N primeiros por grupoFETCH ... WITH TIESpara manter as linhas empatadas
Isso conclui a ordenação, a limitação e os N primeiros. Agora você pode organizar adequadamente qualquer conjunto de resultados.
SELECT name, price
FROM products
ORDER BY price DESC, id
LIMIT 3;Aprenda SQL com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 46
- Aulas
- 183
Perguntas Frequentes
A aula “Encontrando os registros do Top-N” é grátis?
Sim — o texto completo de “Encontrando os registros do Top-N” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.
O que vou aprender em “Encontrando os registros do Top-N”?
Obtenha os valores mais altos e mais baixos. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar SQL Academy?
Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Encontrando os registros do Top-N”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de SQL Academy?
Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Ordenação com ORDER BY
- Ordenação por várias colunas
- LIMIT e OFFSET
- Encontrando os registros do Top-N