certmundo.
es‑mx

6 min de lectura

¿Cómo ordenar y agrupar resultados con ORDER BY y GROUP BY?

ORDER BY organiza tus resultados en un orden específico, y GROUP BY agrupa filas para que puedas hacer cálculos de resumen sobre cada grupo.

Cuando los datos no tienen orden, son difíciles de leer

Imagina que eres analista en Liverpool y tu jefe te pide la lista de ventas del mes. La base de datos te regresa 500 filas en orden aleatorio. Nadie puede leer eso. Necesitas una forma de organizar esa información antes de presentarla.

Eso es exactamente lo que resuelven ORDER BY y GROUP BY. Son como las dos herramientas de organización más útiles de SQL: una acomoda, la otra resume.

El sistema ORDEN-RESUMEN

Puedes pensar en estas dos cláusulas como un sistema de dos pasos:

  • ORDEN: Usa ORDER BY para acomodar filas de mayor a menor, de menor a mayor, o de A a Z.
  • RESUMEN: Usa GROUP BY para juntar filas similares y calcular totales, promedios o conteos.

Ambas van al final de tu consulta SELECT, después del WHERE si lo hay.


¿Cómo funciona ORDER BY?

ORDER BY le dice a SQL en qué columna basar el orden y en qué dirección.

Estructura básica:

SELECT columna1, columna2
FROM tabla
ORDER BY columna1 ASC;
  • ASC significa ascendente: de menor a mayor, o de A a Z. Es el valor por defecto.
  • DESC significa descendente: de mayor a menor, o de Z a A.

Ejemplo 1: Productos de Bimbo ordenados por precio

Supón que tienes una tabla productos con columnas nombre y precio.

SELECT nombre, precio
FROM productos
ORDER BY precio DESC;

Resultado esperado:

nombre              precio
------------------  -------
Pastel de chocolate $85
Donitas Bimbo       $32
Pan de caja blanco  $28
Mantecadas          $22

El producto más caro aparece primero. Así puedes identificar rápidamente tus artículos de mayor valor.

Ejemplo 2: Clientes de Mercado Libre ordenados por nombre

SELECT nombre, ciudad
FROM clientes
ORDER BY nombre ASC;

Esto regresa la lista en orden alfabético. Útil para buscar un cliente específico en una tabla grande.

Ordenar por más de una columna

Puedes ordenar por varias columnas al mismo tiempo. SQL primero ordena por la primera columna. Si hay empates, usa la segunda.

SELECT nombre, ciudad, ventas_totales
FROM vendedores
ORDER BY ciudad ASC, ventas_totales DESC;

Aquí los vendedores se agrupan por ciudad (A a Z) y dentro de cada ciudad aparecen de mayor a menor según sus ventas. Perfecto para comparar el desempeño por sucursal en una empresa como FEMSA.


¿Cómo funciona GROUP BY?

GROUP BY toma filas que tienen el mismo valor en una columna y las convierte en una sola fila de resumen.

Pero ojo: no puedes poner cualquier columna en el SELECT cuando usas GROUP BY. Solo puedes usar:

  1. Las columnas que aparecen en el GROUP BY.
  2. Funciones de agregación como COUNT(), SUM(), AVG(), MAX() o MIN().

Estructura básica:

SELECT columna_grupo, FUNCION(columna_calculo)
FROM tabla
GROUP BY columna_grupo;

Funciones de agregación más usadas

Función ¿Qué hace?
COUNT() Cuenta cuántas filas hay
SUM() Suma los valores de una columna
AVG() Calcula el promedio
MAX() Regresa el valor más alto
MIN() Regresa el valor más bajo

Ejemplo 3: Total de ventas por categoría en Liverpool

Tienes una tabla ventas con columnas categoria y monto.

SELECT categoria, SUM(monto) AS total_ventas
FROM ventas
GROUP BY categoria;

Resultado esperado:

categoria       total_ventas
--------------  ------------
Electrónica     $1,250,000
Ropa            $890,500
Hogar           $430,200
Juguetes        $215,800

Con una sola consulta ves cuánto vendió cada categoría. Sin GROUP BY tendrías que sumar a mano cientos de filas.

Ejemplo 4: Número de empleados por departamento en FEMSA

SELECT departamento, COUNT(*) AS num_empleados
FROM empleados
GROUP BY departamento;

Resultado esperado:

departamento    num_empleados
--------------  -------------
Logística       142
Ventas          98
Finanzas        45
RRHH            23

COUNT(*) cuenta todas las filas de cada grupo. Así sabes cuántas personas trabajan en cada área.


Combinar GROUP BY con ORDER BY

Esta es la combinación más poderosa. Primero agrupas y calculas, luego ordenas el resultado.

Ejemplo 5: Ventas por ciudad, de mayor a menor

SELECT ciudad, SUM(monto) AS total
FROM ventas
GROUP BY ciudad
ORDER BY total DESC;

Resultado esperado:

ciudad          total
--------------  ----------
CDMX            $3,500,000
Monterrey       $2,100,000
Guadalajara     $1,800,000
Puebla          $950,000

Ahora ves de un vistazo qué ciudad genera más ingresos. Este tipo de reporte es lo que los gerentes de Mercado Libre o Bimbo piden todos los días.

El orden correcto de las cláusulas

SQL exige que escribas las cláusulas en este orden específico:

SELECT ...
FROM ...
WHERE ...
GROUP BY ...
ORDER BY ...;

Si las pones en otro orden, obtendrás un error. Memoriza este orden como una regla fija.


Errores comunes al usar ORDER BY y GROUP BY

Error 1: Seleccionar columnas que no están en GROUP BY

Este es el error más frecuente entre principiantes.

-- INCORRECTO
SELECT nombre, departamento, SUM(salario)
FROM empleados
GROUP BY departamento;

El problema es nombre: no está en el GROUP BY ni es una función de agregación. SQL no sabe qué nombre mostrar cuando agrupa varios empleados del mismo departamento.

-- CORRECTO
SELECT departamento, SUM(salario) AS total_salarios
FROM empleados
GROUP BY departamento;

Error 2: Olvidar el alias con AS

Cuando usas SUM() o COUNT(), el nombre de la columna en el resultado se ve feo: SUM(monto). Usa AS para darle un nombre claro.

-- Sin alias (resultado confuso)
SELECT categoria, SUM(monto)
FROM ventas
GROUP BY categoria;

-- Con alias (resultado claro)
SELECT categoria, SUM(monto) AS total_ventas
FROM ventas
GROUP BY categoria;

Error 3: Confundir WHERE con HAVING

WHERE filtra filas antes de agrupar. Si quieres filtrar después de agrupar, necesitas HAVING. Por ejemplo, si solo quieres ver categorías con más de $500,000 en ventas:

SELECT categoria, SUM(monto) AS total_ventas
FROM ventas
GROUP BY categoria
HAVING SUM(monto) > 500000
ORDER BY total_ventas DESC;

HAVING es el filtro que trabaja sobre grupos ya calculados. Es un tema que verás más adelante, pero conviene conocer su existencia desde ahora.


Cómo aplicar esto hoy mismo

Si estás practicando con una base de datos propia o de ejercicio, sigue estos pasos:

  1. Elige una tabla con datos repetidos en alguna columna (ciudad, categoría, departamento).
  2. Escribe un SELECT con GROUP BY en esa columna y agrega COUNT(*) o SUM().
  3. Agrega ORDER BY al final para ordenar el resultado de mayor a menor.
  4. Lee el resultado y pregúntate: ¿esto me dice algo útil sobre los datos?

Ese ciclo de cuatro pasos es el núcleo de cualquier reporte de negocios en SQL.


Quien sabe ordenar y agrupar datos en SQL puede convertir una tabla de miles de filas en una decisión de negocio en segundos.

Puntos clave

  • ORDER BY organiza los resultados de una consulta en orden ascendente (ASC) o descendente (DESC); si no especificas, el valor por defecto es ASC.
  • GROUP BY agrupa filas con el mismo valor en una columna y las convierte en una sola fila de resumen; debes usarlo junto con funciones como SUM(), COUNT(), AVG(), MAX() o MIN().
  • En el SELECT con GROUP BY solo puedes incluir las columnas que están en el GROUP BY y funciones de agregación; incluir otras columnas causa un error.
  • Puedes combinar GROUP BY y ORDER BY en la misma consulta: primero agrupa, luego ordena el resultado. El orden de las cláusulas siempre es SELECT → FROM → WHERE → GROUP BY → ORDER BY.
  • Usa el alias AS para darle nombres claros a las columnas calculadas, como SUM(monto) AS total_ventas, y así tus reportes sean fáciles de leer.

Comparte esta lección:

¿Cómo ordenar y agrupar resultados con ORDER BY y GROUP BY? | SQL y Bases de Datos: Curso Gratis desde Cero | Certmundo