queryLab · software_de_entrenamiento en espera
Nivel 2 · Intermedio · SQL · funciones de grupo

[SQL 05] Funciones de agregación

COUNT, SUM, AVG, MIN y MAX: resumir muchas filas en un valor.
0 / 6 retos resueltos 📘 Clase 10 · funciones AVG, SUM, COUNT, MIN, MAX
Al terminar esta práctica podrás…
  • Resumir datos con COUNT, SUM, AVG, MIN, MAX.
  • Diferenciar COUNT(*), COUNT(columna) y COUNT(DISTINCT columna).
  • Entender cómo tratan los NULL las funciones de grupo.
  • Combinar agregaciones con WHERE y con expresiones (ROUND, restas, porcentajes).

Las funciones de agregación (o de grupo) reciben muchas filas y devuelven un solo valor. Sin GROUP BY resumen toda la tabla (o las filas que pasan el WHERE) en una sola fila de resultado.

Regla clave: las funciones de grupo ignoran los NULL, salvo COUNT(*), que cuenta filas. Por eso AVG(commission_pct) promedia solo a quienes tienen comisión, y COUNT(commission_pct) cuenta solo los valores no nulos.

Sintaxis
SELECT COUNT(*), COUNT(DISTINCT col),
       SUM(col), ROUND(AVG(col), 2),
       MIN(col), MAX(col)
FROM tabla
WHERE condición;
COUNT(*)
Cuenta filas, incluidas las que tienen NULL.
COUNT(col)
Cuenta valores no nulos de la columna.
COUNT(DISTINCT col)
Cuenta valores distintos (no nulos).
SUM / AVG
Suma y promedio de valores numéricos, ignorando NULL.
MIN / MAX
Extremos; también funcionan con textos y fechas.
WHERE antes
El WHERE filtra filas antes de agregar.

1 · Ejemplos guiados · ejecuta y modifica cada bloque

01Contar filas
Total de empleados.
sql-agregacion.sql
Presiona «ejecutar» para ver el resultado.
02COUNT(*) vs COUNT(columna) vs COUNT(DISTINCT)
102 filas, pero solo 31 con comisión y 19 cargos distintos.
sql-agregacion.sql
Presiona «ejecutar» para ver el resultado.
03Resumen salarial
Promedio redondeado, máximo, mínimo y suma de todos los salarios.
sql-agregacion.sql
Presiona «ejecutar» para ver el resultado.
04Agregar con filtro
La agregación respeta el WHERE: solo suma el departamento 80 (Ventas).
sql-agregacion.sql
Presiona «ejecutar» para ver el resultado.
05MIN y MAX con fechas y textos
La primera y la última contratación, y el primer apellido en orden alfabético.
sql-agregacion.sql
Presiona «ejecutar» para ver el resultado.
06Los NULL y el promedio
AVG(commission_pct) divide solo entre quienes tienen comisión. Si quieres contar a todos, convierte NULL en 0.
sql-agregacion.sql
Presiona «ejecutar» para ver el resultado.

⚠ Errores frecuentes

  • Poner una función de grupo en el WHERE (WHERE AVG(salary) > 5000): es un error; eso se filtra con HAVING.
  • Mezclar columnas sueltas con agregaciones sin GROUP BY (SELECT first_name, MAX(salary)). Oracle y PostgreSQL lo rechazan.
  • Olvidar que AVG ignora los NULL y sacar conclusiones equivocadas del promedio.
  • Esperar decimales de SUM o COUNT: si necesitas proporciones, multiplica por 1.0 o usa 100.0 *.

2 · Retos con corrección automática

Escribe tu solución y pulsa comprobar (Ctrl + Enter). Tu consulta y la solución se ejecutan en bases limpias y se comparan los resultados: no importan los nombres de las columnas, sí los datos (y el orden, cuando el reto lo pide). Si te atascas, usa la pista o mira el resultado esperado.

3 · Preguntas tipo solemne

1. La tabla tiene 102 filas y 31 tienen commission_pct. ¿Qué devuelve COUNT(commission_pct)?
2. ¿Cuál consulta obtiene el precio promedio de la tabla productos?
3. ¿Por qué falla SELECT department_id FROM employees WHERE AVG(salary) > 8000;?