DÍA 25Subconsultas y CTE · SQL para Análisis de Datos

Usa un valor de referencia calculado dentro de otra consulta.

Día 25 18 minIntermedio

Comparar con una subconsulta escalar

Objetivos

Al terminar podrás calcular una referencia de una sola fila y utilizarla en una condición exterior.

Concepto

Una subconsulta escalar devuelve una columna y como máximo un valor. AVG(amount) sin GROUP BY produce un promedio general, que puede compararse con cada pago.

El promedio describe el conjunto completo de la consulta interna. Si se filtran los pagos fuera, la referencia no cambia; si se filtran dentro, se define otra población.

Ejemplo

SELECT payment_id, customer_id, amount
FROM payment
WHERE amount > (
  SELECT AVG(amount)
  FROM payment
)
ORDER BY amount DESC, payment_id ASC
LIMIT 10;

La consulta interna se evalúa como un valor; la externa conserva pagos mayores que esa referencia. El resultado sigue teniendo una fila por pago.

Práctica guiada

  1. Cambia AVG por MAX y explica cómo cambia la referencia.
  2. Añade ROUND solo en la salida y compara con redondear el promedio antes de filtrar.
  3. Añade a la consulta interna un filtro por fecha y describe qué población define ahora.

Reto

Lista pagos por encima del promedio de los pagos del mes de mayo de 2005. Mantén clara la diferencia entre el filtro exterior y la población usada para calcular el promedio.

Quiz

¿Qué debe devolver una subconsulta escalar usada con >?

  • A. Un solo valor comparable.
  • B. Varias columnas de una tabla.
  • C. Una instrucción UPDATE.

Respuesta: A. El operador compara cada valor exterior con el valor producido dentro de los paréntesis.

Comprobación

Ya usas un único valor de referencia. La siguiente lección trabaja con listas y muestra por qué un NULL puede afectar a NOT IN.

TU PROGRESO

Cargando estado…