Objetivo

Al finalizar esta lección podrás:

  • Usar COUNT() para contar registros.
  • Usar SUM() para sumar valores numéricos.
  • Usar AVG() para calcular promedios.
  • Combinar agregación con WHERE para obtener resúmenes filtrados.

Funciones de Agregado

Las funciones agregadas no devuelven una lista de filas “normales”, sino un resultado resumido.

COUNT()

Cuenta cuántas filas cumplen una condición.

SELECT COUNT(*) AS total
FROM productos;

SUM()

Suma una columna numérica (por ejemplo, stock).

SELECT SUM(stock) AS stock_total
FROM productos;

AVG()

Calcula el promedio de una columna numérica (por ejemplo, precio).

SELECT AVG(precio) AS precio_promedio
FROM productos;

Consejo: siempre usa alias (AS) para que el resultado sea fácil de leer.

Conceptos clave

  • Agregación: resumir datos (contar, sumar, promediar).
  • COUNT(*): cuenta filas.
  • SUM(columna): suma valores numéricos.
  • AVG(columna): promedio de valores numéricos.
  • WHERE + agregación: resume solo un subconjunto de datos.

Ejemplos (con tu dataset)

Ejemplo 1: ¿Cuántos productos hay?

SELECT COUNT(*) AS total_productos
FROM productos;

Ejemplo 2: ¿Cuántos clientes hay?

SELECT COUNT(*) AS total_clientes
FROM clientes;

Ejemplo 3: ¿Cuánto stock total existe?

SELECT SUM(stock) AS stock_total
FROM productos;

Ejemplo 4: ¿Cuál es el precio promedio?

SELECT AVG(precio) AS precio_promedio
FROM productos;

Ejemplo 5: Resumen filtrado (solo Papelería)

SELECT
  COUNT(*) AS total_papeleria,
  SUM(stock) AS stock_papeleria,
  AVG(precio) AS precio_promedio_papeleria
FROM productos
WHERE categoria = 'Papelería';

Esta consulta muestra la idea clave: agregación + WHERE.

Ejercicios propuestos (con solución explicada)

Intenta resolver antes de ver la solución.

Ejercicio 1 (COUNT)

Cuenta cuántos productos tienen stock > 0.

Ver solución
SELECT COUNT(*) AS productos_con_stock
FROM productos
WHERE stock > 0;

Explicación: WHERE filtra filas y COUNT cuenta las que quedan.

Ejercicio 2 (COUNT)

Cuenta cuántos clientes son de 'Quito'.

Ver solución
SELECT COUNT(*) AS clientes_quito
FROM clientes
WHERE ciudad = 'Quito';

Explicación: se cuentan solo los registros de esa ciudad.

Ejercicio 3 (SUM)

Calcula el stock total de la categoría 'Papelería'.

Ver solución
SELECT SUM(stock) AS stock_total_papeleria
FROM productos
WHERE categoria = 'Papelería';

Explicación: suma stock solo de filas que cumplen la categoría.

Ejercicio 4 (AVG)

Calcula el precio promedio de los productos cuyo precio esté entre 1 y 10.

Ver solución
SELECT AVG(precio) AS precio_promedio_1a10
FROM productos
WHERE precio BETWEEN 1 AND 10;

Explicación: BETWEEN filtra el rango, AVG promedia los precios filtrados.

Ejercicio 5 (Integrador)

Obtén en una sola consulta: cantidad de productos, stock total y precio promedio para la categoría 'Accesorio'.

Ver solución
SELECT
  COUNT(*) AS total_accesorios,
  SUM(stock) AS stock_total_accesorios,
  AVG(precio) AS precio_promedio_accesorios
FROM productos
WHERE categoria = 'Accesorio';

Explicación: combinas varias agregaciones con un solo filtro.

Ejercicio 6 (Desafío corto)

Calcula el stock total de productos cuyo nombre contenga 'Cuaderno'.

Ver solución
SELECT SUM(stock) AS stock_cuadernos
FROM productos
WHERE nombre LIKE '%Cuaderno%';

Explicación: LIKE filtra por patrón de texto y SUM resume el stock.

Errores comunes

  • ❌ Olvidar alias y no entender el resultado — ✅ usa AS para nombres claros.
  • ❌ Querer ver columnas normales + agregación sin saber GROUP BY — ✅ eso se ve en un módulo siguiente.
  • ❌ Creer que AVG “redondea” automáticamente — ✅ algunos motores muestran muchos decimales.

Nota: el siguiente gran paso para agregación por categorías es GROUP BY. Aquí solo usamos agregación global (con o sin filtro).