DÍA 15Agregaciones · SQL para Análisis de Datos

Calcula conteos, suma y promedio, y compara COUNT(*) con COUNT(columna).

Día 15 17 minInicial

Contar y resumir pagos

Objetivos

Pasarás de mostrar pagos individuales a producir unas pocas métricas que resumen toda la tabla.

Concepto

COUNT(*) cuenta filas. COUNT(columna) cuenta solo las filas donde esa columna no es NULL. SUM suma valores y AVG calcula el promedio.

En payment, rental_id puede ser NULL. Por eso comparar COUNT(*) y COUNT(rental_id) permite contar pagos y pagos enlazados a un alquiler sin inventar una fila por cliente.

Ejemplo

SELECT
  COUNT(*) AS payment_rows,
  COUNT(rental_id) AS payments_with_rental,
  COUNT(*) - COUNT(rental_id) AS payments_without_rental,
  COUNT(DISTINCT customer_id) AS customers_with_payments,
  ROUND(SUM(amount), 2) AS total_amount,
  ROUND(AVG(amount), 2) AS average_payment
FROM payment;

Sin GROUP BY, las funciones resumen todas las filas que pasaron los filtros. COUNT(DISTINCT customer_id) cuenta personas únicas, aunque un cliente haya pagado varias veces.

Nota

Cuida la interpretación: total_amount representa la suma de los pagos de esta tabla. Antes de llamarlo ventas por tienda o por película, hacen falta las relaciones y reglas correctas para atribuir cada pago.

Práctica guiada

  1. Quita las columnas calculadas y deja solo COUNT(*).
  2. Cambia COUNT(rental_id) por COUNT(staff_id); compara lo que cada conteo significa.
  3. Agrega MIN(amount) y MAX(amount) para ver los extremos.

Reto

Resume la tabla payment con número de filas, importe mínimo, máximo y promedio redondeado a dos decimales. Pon nombres claros a todas las columnas de salida.

Quiz

¿Qué cuenta COUNT(rental_id) cuando rental_id puede ser NULL?

  • A. Todas las filas, incluidas las nulas.
  • B. Solo las filas que tienen un rental_id.
  • C. Los identificadores distintos de cliente.

Respuesta: B. COUNT(columna) excluye los valores NULL de esa columna.

Comprobación

El resumen actual produce una fila para toda la tabla. En la siguiente lección dividirás esas métricas por cliente usando GROUP BY.

TU PROGRESO

Cargando estado…