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

Combina payment con customer y prepara un extracto de pagos para continuar el análisis en Python.

Día 10 18 minInicial

Unir clientes y pagos

Objetivos

Conectarás dos tablas de Sakila mediante una clave compartida y leerás el grano del resultado antes de analizarlo.

Concepto

payment guarda transacciones y customer guarda personas. Un JOIN es la operación SQL que combina filas relacionadas de dos tablas. Como customer_id aparece en ambas, la consulta puede conectar cada pago con su cliente.

El identificador único payment_id identifica cada fila del resultado: una fila representa un pago. A esto se le llama el grano del resultado: qué representa cada fila. No significa “una fila por cliente”; el mismo cliente puede aparecer varias veces.

Ejemplo

Consulta compatible con MySQL 8 y con el esquema sakila:

SELECT
  p.payment_id,
  p.customer_id,
  c.first_name,
  c.last_name,
  c.store_id,
  p.rental_id,
  p.amount,
  p.payment_date
FROM payment AS p
INNER JOIN customer AS c
  ON c.customer_id = p.customer_id
ORDER BY p.payment_id
LIMIT 8;

INNER JOIN conserva pagos cuyo customer_id encuentra un cliente. En Sakila, rental_id puede ser nulo; esta consulta no la usa como condición, así que esos pagos también pueden aparecer.

Nota

Ojo con el grano: la clave del resultado es payment_id. Si después cuentas clientes, cuenta clientes distintos; sumar filas aquí significa contar pagos.

Práctica guiada

  1. Señala qué columnas vienen de payment y cuáles de customer.
  2. Comprueba que p.customer_id se compara con c.customer_id.
  3. Cambia LIMIT 8 por LIMIT 20 sin quitar el orden.

Reto

Añade p.staff_id al resultado. Después explica por qué dos filas pueden compartir el mismo customer_id y aun así representar pagos diferentes.

Quiz

En el resultado, ¿qué representa una fila?

  • A. Un cliente.
  • B. Un pago.
  • C. Una tienda.

Respuesta: B. payment_id identifica cada transacción.

Siguiente paso

El extracto de muestra de este SELECT es la base de los ejercicios iniciales de Python. El archivo CSV (valores separados por comas) del proyecto está etiquetado como archivo de práctica (fixture): sus valores son ilustrativos, no una exportación oficial de la base.

TU PROGRESO

Cargando estado…