Cómo encontrar los registros superiores e inferiores
Obtenga los valores más altos y más bajos
Cómo encontrar los registros superiores e inferiores es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.
Qué es una consulta Top-N
Una consulta Top-N responde a preguntas como «los 3 productos más caros», «los 10 pedidos más recientes» o «las 5 puntuaciones más bajas».
Solo combina una ordenación con un límite, pero es tan habitual que merece tener un nombre.
-- Top 3 most expensive products
SELECT name, price
FROM products
ORDER BY price DESC
LIMIT 3;Registros Bottom-N
Para obtener los valores más pequeños, invierta la dirección. Ordene en ASC y tome los primeros N para obtener las filas más baratas, antiguas o bajas.
-- 5 cheapest products
SELECT name, price
FROM products
ORDER BY price ASC
LIMIT 5;Añadir un criterio de desempate
Si varias filas comparten el valor límite, la base de datos elige entre ellas de forma arbitraria. Añada una clave secundaria única para que el resultado sea estable y reproducible.
SELECT id, name, price
FROM products
ORDER BY price DESC, id
LIMIT 3;Top-N después de filtrar
Top-N se aplica al conjunto filtrado. Coloque primero una cláusula WHERE para restringir los candidatos y, después, ordene y limite los resultados.
Esto encuentra los 3 productos más caros de la categoría 'Books'.
SELECT name, price
FROM products
WHERE category = 'Books'
ORDER BY price DESC
LIMIT 3;Top-N después de agregar
También puede clasificar valores calculados. Agrupe, agregue y, después, ordene la agregación y limite los resultados.
Esto devuelve los 5 clientes que más han gastado en total.
SELECT customer_id, SUM(total) AS spent
FROM orders
GROUP BY customer_id
ORDER BY spent DESC
LIMIT 5;El enfoque basado en funciones de clasificación
Las funciones de ventana, como ROW_NUMBER(), asignan una clasificación a cada fila. Incluya la consulta en otra consulta y conserve las filas cuya clasificación sea pequeña. Esto permite obtener resultados «Top-N 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 frente a ROW_NUMBER en caso de empates
ROW_NUMBER() siempre asigna números distintos, por lo que devuelve exactamente N filas incluso cuando hay empates. RANK() asigna el mismo número a las filas empatadas, de modo que «top 3» puede devolver más de 3 filas si hay un empate en el tercer puesto.
SELECT name, price,
RANK() OVER (ORDER BY price DESC) AS rnk
FROM products;Top-N por grupo
Para obtener el producto principal de cada categoría, particione la clasificación por categoría. PARTITION BY reinicia la numeración 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 obtener una fila por grupo
El DISTINCT ON de PostgreSQL permite elegir de forma compacta la primera fila de cada grupo. Indique la columna de agrupación y, después, ordene los resultados para que la fila deseada aparezca primero dentro de cada grupo.
SELECT DISTINCT ON (category)
category, name, price
FROM products
ORDER BY category, price DESC;Incluir empates con WITH TIES
Si quiere obtener los 3 primeros resultados y también incluir las filas que empaten con el tercero, use el estándar FETCH ... WITH TIES. Devuelve 3 filas, más las adicionales que empaten con la última.
SELECT name, price
FROM products
ORDER BY price DESC
FETCH FIRST 3 ROWS WITH TIES;Un solo valor superior
Para obtener únicamente la fila más alta o más baja, ORDER BY ... LIMIT 1 es el patrón más sencillo, más claro y a menudo más rápido que una subconsulta con MAX().
-- The single most recent order
SELECT id, total, created_at
FROM orders
ORDER BY created_at DESC
LIMIT 1;Comprobación rápida
Quiere obtener los 3 precios más altos, pero si hay un empate en el tercer puesto, quiere incluirlos todos.
Resumen
Ahora puede encontrar registros Top-N de todas las formas importantes:
ORDER BY ... LIMIT npara listas sencillas de valores superiores o inferiores- Añada un criterio de desempate único para obtener resultados estables
ROW_NUMBER()oDISTINCT ONpara obtener Top-N por grupoFETCH ... WITH TIESpara conservar las filas empatadas
Con esto concluyen la ordenación, los límites y Top-N. Ahora puede poner orden de forma precisa en cualquier conjunto de resultados.
SELECT name, price
FROM products
ORDER BY price DESC, id
LIMIT 3;Aprende SQL con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 46
- Lecciones
- 183
Preguntas frecuentes
¿La lección «Cómo encontrar los registros superiores e inferiores» es gratis?
Sí — el texto completo de «Cómo encontrar los registros superiores e inferiores» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Cómo encontrar los registros superiores e inferiores»?
Obtenga los valores más altos y más bajos Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar SQL Academy?
No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Cómo encontrar los registros superiores e inferiores»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de SQL Academy?
Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Ordenación con ORDER BY
- Ordenación por varias columnas
- LIMIT y OFFSET
- Cómo encontrar los registros superiores e inferiores