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

Reconoce la expansión de filas y cuenta copias y alquileres con la clave correcta.

Día 14 20 minIntermedio

Evitar duplicaciones en relaciones uno a muchos

Objetivos

Al terminar podrás distinguir una fila resultante de la cantidad real de copias o alquileres.

Concepto

Una película puede tener varias copias en inventory; una copia puede aparecer en varios registros de rental. Al unir las tres tablas, el resultado tiene una fila por combinación que coincide. Por eso una misma copia puede repetirse en varias filas.

COUNT(i.inventory_id) cuenta apariciones después del JOIN, no necesariamente copias únicas. COUNT(DISTINCT i.inventory_id) cuenta las copias; COUNT(DISTINCT r.rental_id) cuenta alquileres. La clave debe corresponder a la métrica que quieras informar.

Ejemplo

SELECT
  f.film_id,
  f.title,
  COUNT(i.inventory_id) AS rows_after_join,
  COUNT(DISTINCT i.inventory_id) AS inventory_copies,
  COUNT(DISTINCT r.rental_id) AS rental_records
FROM film AS f
LEFT JOIN inventory AS i
  ON i.film_id = f.film_id
LEFT JOIN rental AS r
  ON r.inventory_id = i.inventory_id
GROUP BY f.film_id, f.title
ORDER BY rental_records DESC, f.film_id
LIMIT 10;

Si rows_after_join supera a inventory_copies, los registros de alquiler repiten copias en el resultado. Para cada indicador usa la clave de la entidad que quieres contar.

Práctica guiada

  1. Cambia COUNT(DISTINCT r.rental_id) por COUNT(r.rental_id) y describe la diferencia.
  2. Quita temporalmente DISTINCT de inventory_id y compara la primera y segunda métrica.
  3. Antes de agregar importes, anota qué representa una fila de la unión.

Reto

Resume por film_id el número de copias y alquileres. Incluye ambas métricas, usa las claves correctas y explica qué consulta previa usarías para comprobar que las sumas no se inflan.

Quiz

¿Qué cuenta COUNT(DISTINCT i.inventory_id) en esta consulta?

  • A. Las combinaciones de copia y alquiler.
  • B. Las copias de inventario con identificadores distintos.
  • C. Las películas que no tienen una copia.

Respuesta: B. DISTINCT elimina las repeticiones de la misma copia causadas por el JOIN.

Comprobación

Ya puedes reconocer relaciones que multiplican filas. Ahora aplicarás funciones agregadas a una población y un grano definidos.

TU PROGRESO

Cargando estado…