Saltar al contenido

Lección 11 de 16 · Lectura y práctica

Ordenamiento y limitación de resultados

Ordenamiento y Limitación de Resultados en SQL En las lecciones anteriores aprendiste a filtrar datos con WHERE y a seleccionar columnas específicas. Ahora descubrirás cómo organizar tus resultados y controlar cuántas filas.

Del concepto a la práctica

Taller de esta lección

ORDER BY y LIMIT son útiles para convertir una tabla extensa en una lista priorizada. En una cola de soporte, ordena primero por severidad descendente y después por antigüedad ascendente; LIMIT 2 muestra los dos casos que requieren atención inmediata. Un criterio secundario evita que el resultado cambie arbitrariamente cuando dos filas empatan.

Ejemplo resuelto

Casos A severidad 3 fecha 2025-05-04, B severidad 2 fecha 2025-05-01, C severidad 3 fecha 2025-05-02. La consulta SELECT id, severidad, fecha FROM casos ORDER BY severidad DESC, fecha ASC LIMIT 2; devuelve C y A, en ese orden.

Pruébalo

  1. Crea los tres casos con sus columnas.

  2. Ordena severidad de mayor a menor.

  3. Añade fecha ascendente como desempate.

  4. Limita la salida a dos filas.

Error frecuente: usar LIMIT sin ORDER BY y llamarlo “los dos más urgentes”. Corrección: define primero el criterio que justifica la prioridad.

Comprueba tu resultado

La salida debe contener C y A; B queda fuera. Si aparece A antes que C, el desempate por fecha no se aplicó correctamente.

Tablas de clientes y pedidos: INNER JOIN conserva coincidencias y LEFT JOIN conserva también a Luis sin pedidos.
CursaloMapa de práctica
Relacionar tablas sin perder filas

Una clave conecta cada pedido con su cliente. INNER JOIN devuelve las coincidencias y puede producir varias filas por cliente. LEFT JOIN conserva también los clientes sin pedido y representa los campos ausentes con NULL.

Ver la infografía en tamaño completo ↗

Ordenamiento y Limitación de Resultados en SQL

En las lecciones anteriores aprendiste a filtrar datos con WHERE y a seleccionar columnas específicas. Ahora descubrirás cómo organizar tus resultados y controlar cuántas filas deseas obtener. Estas dos técnicas son fundamentales para cualquier análisis de datos, ya que te permiten encontrar los valores más relevantes y presentar información de manera clara.

Imaginemos que tienes una tabla con miles de transacciones de ventas y necesitas encontrar los 10 productos más vendidos del mes. Sin la capacidad de ordenar y limitar resultados, tendrías que recuperar todos los datos y procesarlos manualmente. Con SQL, esto se resuelve en una sola consulta.

La Cláusula ORDER BY

La cláusula ORDER BY permite ordenar los resultados de una consulta según una o más columnas. Por defecto, el ordenamiento es ascendente (de menor a mayor), pero puedes cambiarlo a descendente usando la palabra clave DESC.

Sintaxis básica

SELECT columna1, columna2
FROM nombre_tabla
ORDER BY columna1 [ASC|DESC];

Ejemplo práctico: Ordenar productos por precio

Supongamos que tenemos una tabla llamada productos con las siguientes columnas: id, nombre, precio y categoria.

-- Ordenar productos de menor a mayor precio
SELECT nombre, precio, categoria
FROM productos
ORDER BY precio ASC;

-- Ordenar productos de mayor a menor precio
SELECT nombre, precio, categoria
FROM productos
ORDER BY precio DESC;

El primer consulta te mostraría los productos más económicos primero, mientras que el segundo te mostraría los más caros al inicio de los resultados.

Ordenar por múltiples columnas

Puedes ordenar por varias columnas simultáneamente. Esto es útil cuando necesitas un orden secundario dentro de un orden primario. La sintaxis es:

SELECT nombre, categoria, precio
FROM productos
ORDER BY categoria ASC, precio DESC;

Esta consulta organiza los productos primero por categoría en orden alfabético, y dentro de cada categoría, los ordena por precio de mayor a menor. Es decir, dentro de la categoría "Electrónica" verás primero los productos más caros.

La Cláusula LIMIT

La cláusula LIMIT restricte el número de filas que devuelve la consulta. Es extremadamente útil cuando solo necesitas una muestra de datos o los primeros registros según algún criterio.

Sintaxis básica

SELECT columna1, columna2
FROM nombre_tabla
LIMIT número_de_filas;

Ejemplo práctico: Obtener los 5 productos más caros

SELECT nombre, precio
FROM productos
ORDER BY precio DESC
LIMIT 5;

Esta consulta devuelve únicamente los 5 productos con los precios más altos. Nota cómo combinamos ORDER BY con LIMIT para obtener resultados específicos.

Usar LIMIT con OFFSET

El OFFSET te permite saltar un número determinado de filas antes de comenzar a devolver resultados. Esto es esencial para la paginación de resultados.

-- Primera página (filas 1-10)
SELECT nombre, precio
FROM productos
ORDER BY precio DESC
LIMIT 10 OFFSET 0;

-- Segunda página (filas 11-20)
SELECT nombre, precio
FROM productos
ORDER BY precio DESC
LIMIT 10 OFFSET 10;

-- Tercera página (filas 21-30)
SELECT nombre, precio
FROM productos
ORDER BY precio DESC
LIMIT 10 OFFSET 20;

Esta técnica es exactamente la que usan las páginas web para mostrar resultados en múltiples páginas, como en un catálogo de productos o resultados de búsqueda.

Ejemplos Prácticos Aplicables

1. Encontrar los 3 pedidos más recientes

SELECT pedido_id, cliente, fecha_pedido, total
FROM pedidos
ORDER BY fecha_pedido DESC
LIMIT 3;

Esta consulta es perfecta para un dashboard que muestra las transacciones más recientes de tu negocio.

2. Top 10 clientes por volumen de compra

SELECT cliente_id, nombre, SUM(total_compra) AS volumen_total
FROM ventas
GROUP BY cliente_id, nombre
ORDER BY volumen_total DESC
LIMIT 10;

Identifica a tus mejores clientes según el monto total de sus compras. Este tipo de consulta es fundamental para estrategias de customer relationship management (CRM).

3. Productos con stock bajo (primeros 5)

SELECT nombre_producto, stock_actual, stock_minimo
FROM inventario
WHERE stock_actual < stock_minimo
ORDER BY stock_actual ASC
LIMIT 5;

Encuentra rápidamente los productos que necesitan reposición urgente, ordenados del que tiene menos stock al que tiene más (dentro de los que están bajo mínimo).

4. Análisis de tendencias mensuales

SELECT DATE_TRUNC('month', fecha_venta) AS mes, 
       COUNT(*) AS total_ventas,
       SUM(monto) AS ingreso_total
FROM ventas
GROUP BY DATE_TRUNC('month', fecha_venta)
ORDER BY mes DESC
LIMIT 12;

Obtiene un resumen de los últimos 12 meses de operación, útil para análisis de tendencias y planificación financiera.

Errores Comunes

Al trabajar con ORDER BY y LIMIT, es frecuente cometer ciertos errores que pueden afectar tus resultados o generar consultas incorrectas. Conocerlos te ayudará a evitarlos.

  1. Olvidar que ORDER BY va después de WHERE: Un error muy común es colocar la cláusula ORDER BY antes del WHERE. Recuerda siempre el orden correcto: SELECT → FROM → WHERE → ORDER BY → LIMIT. Escribir ORDER BY precio WHERE categoria = 'Electrónica' generará un error de sintaxis.
  2. Usar LIMIT sin ORDER BY para datos "recientes" o "mejores": Cuando escribes LIMIT 10 sin un ORDER BY explícito, los resultados que obtienes son impredecibles porque dependen del orden interno en que la base de datos almacena los datos. Si necesitas "los últimos 10 pedidos", siempre combina LIMIT con ORDER BY en la columna relevante.
  3. Confundir ORDER BY con GROUP BY: Aunque ambos implican organización de datos, tienen propósitos diferentes. GROUP BY agrega filas con valores idénticos, mientras que ORDER BY simplemente reorganiza el orden de presentación de los resultados. Usar uno donde corresponde el otro produce resultados incorrectos o errores.

Nota importante: En algunas bases de datos como SQL Server, la palabra clave no es LIMIT sino TOP. Por ejemplo: SELECT TOP 10 nombre, precio FROM productos ORDER BY precio DESC. Adapta tu sintaxis según el sistema de base de datos que estés utilizando.

Combinando Todo: Un Caso Integral

Imaginemos que trabajas en el departamento de recursos humanos y necesitas generar un reporte de los 20 empleados con mejor desempeño del último trimestre, segmentados por departamento.

SELECT departamento,
       nombre_empleado,
       puntuacion_desempeño,
       fecha_evaluacion
FROM evaluaciones
WHERE fecha_evaluacion >= '2024-10-01'
  AND fecha_evaluacion < '2025-01-01'
ORDER BY departamento ASC, puntuacion_desempeño DESC
LIMIT 20;

Esta consulta demuestra la combinación perfecta de todas las cláusulas aprendidas:

  • SELECT especifica las columnas a mostrar
  • WHERE filtra solo las evaluaciones del último trimestre
  • ORDER BY organiza por departamento y luego por puntuación descendente
  • LIMIT muestra solo los 20 mejores resultados totales

Buenas Prácticas

Al utilizar ordenamiento y limitación en tus consultas SQL, considera estas recomendaciones:

  • Siempre usa ORDER BY con LIMIT cuando necesites filas específicas (primeros, últimos, mejores, peores).
  • Indexa las columnas que usas frecuentemente para ordenar, ya que esto mejora significativamente el rendimiento.
  • Sé específico con los tipos de datos en las comparaciones para evitar errores de conversión implícita.
  • Documenta tus consultas explicando por qué elegiste cierto orden o límite, especialmente cuando se usan valores arbitrarios.

Checklist de Dominio

Antes de continuar a la siguiente lección, verifica que dominas estos conceptos:

  • Sé usar la cláusula ORDER BY para ordenar resultados de forma ascendente (ASC) y descendente (DESC).
  • Puedo ordenar por múltiples columnas y entiendo cómo funciona el orden primario y secundario.
  • Sé utilizar LIMIT para restringir el número de filas devueltas por una consulta.
  • Puedo combinar ORDER BY con LIMIT para obtener los primeros o últimos N registros según un criterio.
  • Entiendo cómo usar OFFSET para implementar paginación de resultados.
  • Conozco los errores comunes y sé cómo evitarlos en mis consultas.
  • Puedo escribir consultas prácticas que respondan preguntas de negocio reales usando estas cláusulas.
  • Reconozco las diferencias de sintaxis entre LIMIT (MySQL, PostgreSQL) y TOP (SQL Server).

Sigue con Análisis de Datos con Google Sheets y SQL

Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.

Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.