SQL · Sección 10

Subconsultas

Consultas de una o varias filas, correlación, EXISTS y resultados intermedios.

3
lecciones
3
ejercicios resueltos
CONTENIDO ORIGINAL

Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.

ANTES DE EMPEZAR

Ubícate antes de avanzar

01 / PUNTO DE PARTIDA

Conviene haber comprendido Agrupación y conjuntos.

02 / META OBSERVABLE

Al terminar deberías poder relacionar Subconsulta escalar con IN, ANY y ALL y resolver un caso nuevo.

03 / TIEMPO SUGERIDO

Reserva entre 35 y 55 minutos para lectura, ejemplos, tres comprobaciones y cierre.

04 / PREPARA EL LABORATORIO

Las primeras secciones se leen sin instalar nada. Para practicar SQL prepara PostgreSQL o un DBMS equivalente.

Abrir la guía de herramientas →
Diagnóstico rápido: ¿cómo se relacionan Subconsulta escalar y IN, ANY y ALL?

No necesitas acertar todavía. Escribe una hipótesis de dos líneas y compárala con tu respuesta al finalizar; si puedes corregirla y justificar el cambio, hubo aprendizaje.

Ruta guiada · 3 lecciones

Aprende el tema paso a paso

Usarás resultados de una consulta dentro de otra y elegirás operadores correctos para una fila, varias filas o una comprobación de existencia.

Al terminar podrás
  • La subconsulta responde una parte del problema
  • IN, ANY y ALL expresan comparaciones diferentes
  • EXISTS y las subconsultas correlacionadas comprueban existencia
01
Consulta interna

La subconsulta responde una parte del problema

La consulta interna produce un valor o conjunto que la externa utiliza. Conviene ejecutarla por separado para comprobar qué devuelve.

01

Una subconsulta escalar devuelve un valor.

02

Puede aparecer en WHERE, FROM o SELECT según el caso.

03

Los paréntesis delimitan la consulta interna.

Comprueba lo aprendido · 01

¿Qué ocurriría si la subconsulta usada con = devuelve varias filas?

Mostrar respuesta

El DBMS producirá un error porque el operador espera un solo valor. Se necesita un operador para múltiples filas o una subconsulta que garantice un resultado único.

02
Varias filas

IN, ANY y ALL expresan comparaciones diferentes

IN compara con cualquier valor de una lista. ANY exige cumplir respecto de al menos uno; ALL, respecto de todos.

01

= ANY equivale conceptualmente a IN.

02

> ALL exige superar el valor máximo del conjunto.

03

< ANY exige ser menor que al menos un valor.

Comprueba lo aprendido · 02

¿Qué significa salario > ALL (subconsulta)?

Mostrar respuesta

Que el salario es mayor que todos los valores devueltos; si el conjunto tiene salarios, supera al máximo.

03
Relación fila a fila

EXISTS y las subconsultas correlacionadas comprueban existencia

Una subconsulta correlacionada usa valores de la fila externa. EXISTS solo pregunta si aparece al menos una coincidencia y puede detenerse al encontrarla.

01

EXISTS no necesita devolver columnas útiles.

02

La correlación se reconoce por el alias externo dentro de la subconsulta.

03

WITH nombra resultados intermedios para mejorar claridad.

Comprueba lo aprendido · 03

¿EXISTS cuenta cuántos pedidos tiene cada cliente?

Mostrar respuesta

No. Solo comprueba si existe al menos uno. Para contar se usaría COUNT con agrupación o una subconsulta adecuada.

Resumen de la sección

Tu recorrido en tres ideas

  1. La subconsulta responde una parte del problema
  2. IN, ANY y ALL expresan comparaciones diferentes
  3. EXISTS y las subconsultas correlacionadas comprueban existencia
CIERRE DE LA SECCIÓN

Comprueba que puedes usarlo

Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.

ERROR 01

Usar = con una subconsulta que puede devolver varias filas.

ERROR 02

Usar NOT IN sin considerar que el conjunto puede contener NULL.

DESAFÍO INTEGRADOR

Ahora hazlo sin guía

Obtén productos sobre el precio promedio de su categoría y categorías sin ventas recientes.

Mostrar pauta de corrección
Una respuesta sólida:
  • La correlación de la primera subconsulta está bien definida.
  • EXISTS o NOT EXISTS expresa la segunda necesidad.
  • Se prueban empates, categorías vacías y NULL.