DÍA 13Relaciones entre tablas · SQL para Análisis de Datos

Comprueba el efecto de una relación uno a muchos con conteos comparables.

Día 13 19 minIntermedio

Medir filas antes y después de un JOIN

Objetivos

Al terminar podrás contrastar el resultado de un JOIN con su tabla de origen antes de calcular métricas.

Concepto

La cardinalidad de una unión describe cuántas filas coinciden y cuántas filas produce al combinar tablas. Cada payment tiene un customer_id; customer.customer_id es una clave única. Si la relación está intacta, unir los pagos con sus clientes conserva una fila por pago. Medir filas y claves distintas ayuda a detectar filas perdidas o multiplicadas.

Un resultado con la misma cantidad de filas no demuestra por sí solo que todos los valores sean correctos. Aquí es un control inicial: también se revisan claves, nulos y relaciones faltantes.

Ejemplo

Primero cuenta las filas y los identificadores de payment:

SELECT
  COUNT(*) AS payment_rows,
  COUNT(DISTINCT payment_id) AS payment_keys
FROM payment;

Después cuenta lo que queda al unir cada pago con su cliente:

SELECT
  COUNT(*) AS joined_rows,
  COUNT(DISTINCT p.payment_id) AS joined_payment_keys
FROM payment AS p
INNER JOIN customer AS c
  ON c.customer_id = p.customer_id;

Cada consulta devuelve una fila de conteos. Compara payment_rows con joined_rows, y payment_keys con joined_payment_keys. Si el segundo conteo es menor, el JOIN pudo dejar pagos fuera; si joined_rows es mayor que joined_payment_keys, pudo repetir pagos. Que coincidan es una buena comprobación inicial, pero no demuestra por sí solo que todas las columnas tengan valores correctos.

Práctica guiada

  1. Añade COUNT(DISTINCT p.customer_id) al resumen unido.
  2. Cambia INNER JOIN por LEFT JOIN y observa los conteos.
  3. Escribe una consulta que cuente pagos sin cliente coincidente usando LEFT JOIN e IS NULL.

Reto

Compara cuántas películas hay en film con cuántos identificadores distintos quedan después de unir film_category. Explica por qué esas cifras pueden diferir y qué clave define el grano del resultado unido.

Quiz

¿Qué puede revelar una diferencia entre COUNT(*) y COUNT(DISTINCT payment_id) después de un JOIN?

  • A. Que la consulta podría haber multiplicado pagos.
  • B. Que ORDER BY cambió los datos almacenados.
  • C. Que COUNT(DISTINCT ...) incluye valores nulos.

Respuesta: A. Comparar filas con claves únicas ayuda a detectar multiplicación.

Comprobación

Ya puedes medir el efecto de una unión. La próxima lección muestra cómo un segundo JOIN uno a muchos puede repetir copias y alquileres.

TU PROGRESO

Cargando estado…