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
- Cambia
AVGporMAXy explica cómo cambia la referencia. - Añade
ROUNDsolo en la salida y compara con redondear el promedio antes de filtrar. - 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.