0Pricing
SQL Academy · Lección

Errores habituales: valores NULL en agregaciones

Evite las trampas clásicas de NULL: AVG ignora los NULL, COUNT(columna) omite los NULL y pueden producirse resultados inesperados al agrupar por columnas anulables.

Errores habituales: valores NULL en agregaciones es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.

Las agregaciones omiten NULL

Todas las agregaciones, excepto COUNT(*), ignoran las entradas NULL. A veces esto es lo que desea y, en otras ocasiones, es un error.

Trampa clásica: COUNT(*) frente a COUNT(col)

Los resultados son diferentes cuando la columna contiene valores NULL:

SELECT COUNT(*)         FROM users;      -- 1000
SELECT COUNT(email)     FROM users;      -- 950  (50 users have NULL email)

Error: AVG no cuenta NULL como cero

Calificaciones [5, 5, NULL] → AVG = 5, no (5+5+0)/3 = 3.33. Decida si este es el comportamiento que desea.

SELECT AVG(rating) FROM reviews;        -- 5
SELECT AVG(COALESCE(rating, 0)) FROM reviews;   -- 3.33

Tabla vacía = agregación NULL

Si ninguna fila coincide, SUM/AVG/MIN/MAX devuelven NULL, no 0. Puede gestionarlo con COALESCE:

SELECT COALESCE(SUM(total), 0) AS revenue
FROM orders
WHERE user_id = 999999;       -- safe even when user has no orders

SUM de una columna NULL

Si el valor de todas las filas es NULL, SUM devuelve NULL, no 0. Es el mismo inconveniente.

GROUP BY con una clave de agrupación NULL

NULL forma su propio grupo:

SELECT country, COUNT(*) FROM users
GROUP BY country;
-- → ('US', 100), ('CA', 30), (NULL, 5)

Contar valores distintos con NULL

COUNT(DISTINCT col) ignora los valores NULL:

INSERT INTO t (c) VALUES (1),(2),(NULL),(NULL),(2);
SELECT COUNT(DISTINCT c) FROM t;   -- 2 (NULL not counted)

DISTINCT con varias columnas

Una tupla que contiene NULL sigue siendo distinta de otra que tiene las mismas columnas no NULL:

SELECT COUNT(*) FROM (
  SELECT DISTINCT a, b FROM t
) sub;

Cuidado con las combinaciones implícitas con tablas opcionales

Un LEFT JOIN puede introducir valores NULL que modifiquen la agregación. Decida si desea contar esas filas o excluirlas:

SELECT u.id, COUNT(o.id) AS orders
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id;          -- COUNT(o.id) gives 0 for users with no orders

FILTER para recuentos condicionales

FILTER es más claro que incluir CASE dentro de SUM:

SELECT COUNT(*) FILTER (WHERE status = 'paid') AS paid_count,
       COUNT(*) FILTER (WHERE status = 'refunded') AS refund_count
FROM orders;

Pruebe siempre las agregaciones con NULL

Al añadir una nueva consulta de agregación, ejecútela con un conjunto de prueba que incluya valores NULL. El error casi nunca aparece en datos de prueba limpios.

Resumen

NULL combinado con una agregación es el error más común de SQL.

  • Las agregaciones omiten NULL (excepto COUNT(*))
  • Un resultado vacío produce NULL, no 0
  • Use COALESCE cuando necesite obtener 0
  • Preste especial atención a las agregaciones con LEFT JOIN

Comprobación rápida

Reviews tiene las calificaciones [5, 5, NULL, 1]. ¿Qué devuelve AVG(rating)?

Preguntas frecuentes

¿La lección «Errores habituales: valores NULL en agregaciones» es gratis?

Sí — el texto completo de «Errores habituales: valores NULL en agregaciones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Errores habituales: valores NULL en agregaciones»?

Evite las trampas clásicas de NULL: AVG ignora los NULL, COUNT(columna) omite los NULL y pueden producirse resultados inesperados al agrupar por columnas anulables. Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar SQL Academy?

No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Errores habituales: valores NULL en agregaciones»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de SQL Academy?

Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. COUNT, SUM, AVG, MIN y MAX
  2. GROUP BY con una o varias columnas
  3. HAVING frente a WHERE
  4. Errores habituales: valores NULL en agregaciones
← Volver a SQL Academy