ORDER BY y LIMIT: Cómo ordenar y paginar resultados en SQL

Clase 15 de 25Curso de Fundamentos de Bases de Datos y SQL

Resumen

Responder preguntas como cuáles son los diez productos más vendidos o las cinco sucursales con mayor facturación requiere dominar dos comandos fundamentales de SQL: ORDER BY y LIMIT. Estas instrucciones son la base de cualquier reporte y permiten transformar datos crudos en información útil para el negocio.

¿Cómo funciona ORDER BY en SQL?

Cuando ejecutamos una consulta, los resultados no tienen un orden garantizado. ORDER BY nos permite definir cómo se organizan las filas según una o más columnas [01:20].

Existen dos direcciones de ordenamiento:

  • Ascendente (ASC): ordena de menor a mayor. Es el comportamiento por defecto, así que escribir ORDER BY precio es equivalente a ORDER BY precio ASC.
  • Descendente (DESC): ordena de mayor a menor. Se utiliza cuando necesitamos ver primero los valores más altos, como el producto más caro.

Por ejemplo, al consultar SELECT nombre, precio FROM productos ORDER BY precio ASC, obtenemos los productos listados desde el más barato hasta el más costoso. Si cambiamos a ORDER BY precio DESC, el resultado se invierte mostrando primero el más caro [02:10].

¿Qué significa ordenar por múltiples columnas?

Una técnica muy utilizada es aplicar ORDER BY con varias columnas, donde SQL usa el primer criterio como principal y el segundo como desempate [03:05]. Por ejemplo:

sql SELECT nombre, categoria_id, precio FROM productos ORDER BY categoria_id ASC, precio DESC;

Esta consulta agrupa primero por categoria_id de forma ascendente (1, 2, 3...) y dentro de cada categoría ordena los productos por precio de mayor a menor. Es una forma poderosa de estructurar reportes donde necesitamos jerarquía en los criterios de ordenamiento.

¿Cómo obtener un top N de resultados con LIMIT?

Las preguntas de negocio tipo "los cinco más caros" o "los tres pedidos más recientes" combinan ORDER BY con LIMIT para recortar la cantidad de filas devueltas [04:30].

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

Esta consulta entrega el top five de productos por precio. Si necesitamos un top ten, solo cambiamos LIMIT 5 por LIMIT 10 [05:15].

¿Cómo encontrar los registros más recientes?

Para obtener los pedidos más recientes, ordenamos por fecha de forma descendente, lo que coloca la fecha más nueva primero y retrocede hacia el pasado [05:50]:

sql SELECT pedido_id, cliente_id, fecha FROM pedidos ORDER BY fecha DESC LIMIT 3;

El resultado muestra los últimos tres pedidos realizados, con sus respectivos clientes y fechas.

¿Para qué sirve OFFSET en la paginación de resultados?

OFFSET permite saltar un número determinado de filas antes de comenzar a devolver resultados [06:40]. Es la herramienta clave para implementar paginación, útil cuando los datos deben mostrarse en segmentos.

  • LIMIT 10 OFFSET 0 devuelve las filas 1 a 10 (primera página).
  • LIMIT 10 OFFSET 10 devuelve las filas 11 a 20 (segunda página).
  • LIMIT 10 OFFSET 20 devuelve las filas 21 a 30 (tercera página).

sql SELECT nombre, precio FROM productos ORDER BY nombre LIMIT 10 OFFSET 10;

Este patrón es especialmente útil cuando existen límites de exportación o cuando los datos se envían por correo, se cargan en un CSV o se muestran en informes con formato fijo [07:45].

¿Cómo trata SQL los valores nulos al ordenar?

Cuando una columna contiene datos nulos (vacíos, sin valor asignado), el comportamiento varía según la dirección del ordenamiento [08:20]:

  • Con ORDER BY precio ASC, los nulos aparecen al final.
  • Con ORDER BY precio DESC, los nulos aparecen al inicio.

SQL asume que los valores nulos son inferiores a cero, por lo que en orden descendente los coloca primero. Conocer este comportamiento evita sorpresas en los reportes.

Ahora que dominas ORDER BY, LIMIT y OFFSET, pon a prueba tus habilidades: busca los cinco productos más caros del catálogo, los diez clientes registrados más recientemente y los últimos tres pedidos por fecha descendente. Comparte tus consultas y resultados en los comentarios.