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
- Añade
COUNT(DISTINCT p.customer_id)al resumen unido. - Cambia
INNER JOINporLEFT JOINy observa los conteos. - Escribe una consulta que cuente pagos sin cliente coincidente usando
LEFT JOINeIS 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 BYcambió 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.