Inicio > Cursos > SQL y Bases de Datos > GROUP BY y Funciones Agregadas
SQL y Bases de DatosConsultas AvanzadasLección 7 de 20

GROUP BY y Funciones Agregadas

Las funciones agregadas calculan un valor a partir de múltiples filas: COUNT cuenta registros, SUM suma valores, AVG calcula promedios, MIN y MAX encuentran extremos. GROUP BY agrupa filas para aplicar estas funciones por categoría. HAVING filtra grupos (como WHERE pero para grupos).

-- COUNT: contar filas
SELECT COUNT(*) AS total_usuarios FROM users;
SELECT COUNT(telefono) AS con_telefono FROM users;  -- ignora NULL
SELECT COUNT(DISTINCT pais) AS paises FROM users;

-- SUM, AVG, MIN, MAX
SELECT
  SUM(total) AS ingresos_totales,
  AVG(total) AS ticket_promedio,
  MIN(total) AS pedido_minimo,
  MAX(total) AS pedido_maximo
FROM orders
WHERE fecha >= '2024-01-01';

-- GROUP BY: agrupar por una columna
-- Ventas por categoría de producto
SELECT
  p.categoria,
  COUNT(oi.id) AS unidades_vendidas,
  SUM(oi.precio * oi.cantidad) AS ingresos,
  AVG(oi.precio) AS precio_promedio
FROM order_items oi
INNER JOIN products p ON p.id = oi.product_id
GROUP BY p.categoria
ORDER BY ingresos DESC;

-- GROUP BY múltiple
SELECT
  DATE_TRUNC('month', fecha) AS mes,
  p.categoria,
  SUM(oi.cantidad) AS unidades
FROM orders o
JOIN order_items oi ON oi.order_id = o.id
JOIN products p ON p.id = oi.product_id
GROUP BY DATE_TRUNC('month', fecha), p.categoria
ORDER BY mes, unidades DESC;

-- HAVING: filtrar grupos (WHERE filtra filas, HAVING filtra grupos)
-- Categorías con más de 100 unidades vendidas Y más de 5000 en ingresos
SELECT
  p.categoria,
  COUNT(*) AS ventas,
  SUM(oi.precio * oi.cantidad) AS ingresos
FROM order_items oi
JOIN products p ON p.id = oi.product_id
GROUP BY p.categoria
HAVING COUNT(*) > 100 AND SUM(oi.precio * oi.cantidad) > 5000
ORDER BY ingresos DESC;
ConsejoRegla clave: en un SELECT con GROUP BY, solo puedes incluir columnas que estén en el GROUP BY o dentro de funciones agregadas. Si agregas otra columna, PostgreSQL te dará un error.
← JOINs — Uniendo TablasSubconsultas →

Practica esta lección

Resuelve los ejercicios del curso de SQL y Bases de Datos en la app, gratis y con corrección automática.

Empezar a practicar