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

Responde preguntas de existencia sin contar ni devolver columnas internas.

Día 27 19 minIntermedio

Comprobar relaciones con EXISTS

Objetivos

Al terminar podrás preguntar si existe una fila relacionada sin incorporar sus columnas al resultado.

Concepto

EXISTS es verdadero cuando la subconsulta devuelve al menos una fila. NOT EXISTS es verdadero cuando no encuentra ninguna. La consulta interior suele usar una condición correlacionada que se refiere a la fila exterior.

El SELECT 1 interior solo expresa que importa la existencia; su valor no aparece en la salida. Esta forma evita multiplicar la fila exterior cuando hay varias coincidencias.

Ejemplo

Películas que tienen al menos una copia:

SELECT f.film_id, f.title
FROM film AS f
WHERE EXISTS (
  SELECT 1
  FROM inventory AS i
  WHERE i.film_id = f.film_id
)
ORDER BY f.film_id
LIMIT 10;

Películas para las que no existe una copia registrada:

SELECT f.film_id, f.title
FROM film AS f
WHERE NOT EXISTS (
  SELECT 1
  FROM inventory AS i
  WHERE i.film_id = f.film_id
)
ORDER BY f.film_id
LIMIT 10;

Ambas consultas conservan una fila por película; un JOIN directo podría producir varias filas para un título con varias copias.

Práctica guiada

  1. Cambia EXISTS por NOT EXISTS y predice qué conjunto devuelve.
  2. Quita i.film_id = f.film_id y explica por qué la subconsulta deja de depender de cada película.
  3. Reescribe una de las consultas con LEFT JOIN e IS NULL.

Reto

Lista clientes que no tienen pagos usando NOT EXISTS. Devuelve solo customer_id, ordena por identificador y limita la salida. No agregues una unión que multiplique clientes.

Quiz

¿Qué evalúa EXISTS (SELECT 1 ...)?

  • A. Si la subconsulta devuelve al menos una fila.
  • B. Si la columna seleccionada vale exactamente uno.
  • C. Cuántas columnas tiene la tabla interior.

Respuesta: A. El contenido del SELECT interior no se devuelve; se evalúa la presencia de filas.

Comprobación

Ya compruebas relaciones sin ampliar el grano. La próxima lección usa una subconsulta correlacionada para calcular un resumen por cada cliente.

TU PROGRESO

Cargando estado…