Tutorial de SQL

Cómo usar subconsultas en SQL

Una subconsulta es un SELECT entre paréntesis dentro de otra consulta. Si devuelve un solo valor, puedes usarlo como si fuera un número, por ejemplo para encontrar a quienes están arriba del promedio sin copiarlo a mano. Aquí verás la sintaxis, un ejemplo resuelto y por qué WHERE columna > AVG(columna) no funciona.

Subconsulta: una consulta dentro de otra

Una subconsulta es un SELECT escrito entre paréntesis dentro de otra consulta. Si devuelve un solo valor (una fila y una columna), puedes usarlo como si fuera un número.

Sirve para comparar contra algo que hay que calcular: el promedio, el máximo, el total… sin copiar el número a mano.

Cómo se escribe

SELECT … FROM tabla WHERE columna > (SELECT AVG(columna) FROM tabla)

( SELECT … )
la subconsulta, siempre entre paréntesis
AVG(columna)
debe devolver un solo valor para poder compararlo
columna >
cada fila se compara contra ese valor

Ejemplo resuelto

SELECT nombre, promedio FROM alumnos WHERE promedio > (SELECT AVG(promedio) FROM alumnos) ORDER BY promedio DESC
Número de fila#nombrepromedio
1Regina Salinas9.8
2Valeria Núñez9.4
3Sebastián Lara9.1
4Mateo Guzmán8.9
5Camila Ortega8.6

Alumnos con promedio mayor al promedio del grupo completo.

  • WHERE precio > AVG(precio) es un error: las funciones de resumen no van directo en WHERE. Por eso se usa la subconsulta.
  • Ejecuta primero la subconsulta sola para ver qué número devuelve.

Preguntas frecuentes

¿Por qué no puedo escribir WHERE precio > AVG(precio)?

Porque las funciones de resumen no van directo en WHERE. La subconsulta calcula primero el promedio y la consulta principal compara contra ese valor.

¿Qué debe devolver una subconsulta para compararla?

Un solo valor: una fila y una columna, como un promedio o un máximo.

¿Cómo reviso que mi subconsulta esté bien?

Ejecuta primero la subconsulta sola para ver qué número devuelve.