SQL Server

Subconsultas en SQL Server (Subqueries) explicadas fácil con ejemplos reales y ejercicios

Publicado por J. Panduro hace 4 meses

Subconsultas en SQL Server (Subqueries) explicadas fácil con ejemplos reales y ejercicios

A medida que avanzas en SQL, llega un punto donde una sola consulta ya no es suficiente. Ahí es donde aparecen las subconsultas o Subqueries, una herramienta muy poderosa en SQL Server.


Las subconsultas permiten:

  1. Resolver consultas complejas
  2. Comparar resultados
  3. Filtrar usando datos calculados
  4. Crear análisis empresariales reales

En este artículo aprenderás:

  1. Qué es una subconsulta
  2. Cómo funciona
  3. Tipos de subqueries
  4. Casos reales empresariales
  5. Ejercicios tipo entrevista


¿Qué es una subconsulta?


Una subconsulta es una consulta dentro de otra consulta.

También se conoce como:

  1. Subquery
  2. Consulta anidada


Ejemplo conceptual


SELECT *
FROM Productos
WHERE Precio > (
SELECT AVG(Precio)
FROM Productos
);


La consulta interna calcula el promedio.

La consulta externa usa ese resultado.



Dataset completo (copiar y ejecutar)

-- 1. Limpiar tabla
IF OBJECT_ID('Ventas', 'U') IS NOT NULL
DROP TABLE Ventas;

-- 2. Crear tabla
CREATE TABLE Ventas (
IdVenta INT IDENTITY(1,1) PRIMARY KEY,
Producto VARCHAR(100) NOT NULL,
Categoria VARCHAR(50) NOT NULL,
Cliente VARCHAR(100) NOT NULL,
Total DECIMAL(10,2) NOT NULL
);

-- 3. Insertar datos
INSERT INTO Ventas (Producto, Categoria, Cliente, Total)
VALUES
('Laptop', 'Tecnología', 'Juan Pérez', 2500.00),
('Mouse', 'Tecnología', 'Ana López', 80.00),
('Teclado', 'Tecnología', 'Juan Pérez', 150.00),
('Monitor', 'Tecnología', 'Carlos Ruiz', 900.00),
('Silla', 'Muebles', 'Ana López', 450.00),
('Escritorio', 'Muebles', 'Juan Pérez', 700.00),
('Tablet', 'Tecnología', 'Carlos Ruiz', 1200.00);


Subconsulta básica


Mostrar productos cuyo precio sea mayor al promedio.


SELECT
Producto,
Total
FROM Ventas
WHERE Total > (
SELECT AVG(Total)
FROM Ventas
);


Resultado esperado


Productos con precio superior al promedio general.


¿Cómo funciona?


Paso 1


La subconsulta se ejecuta primero:


SELECT AVG(Total)
FROM Ventas;


Paso 2


Luego SQL ejecuta:


WHERE Total > 854.28


Subconsulta con IN


Mostrar clientes que realizaron compras.


SELECT *
FROM Ventas
WHERE Cliente IN (
SELECT Cliente
FROM Ventas
WHERE Total > 1000
);



Busca clientes con compras grandes.


Subconsulta con MAX


Obtener la venta más alta.


SELECT *
FROM Ventas
WHERE Total = (
SELECT MAX(Total)
FROM Ventas
);


Subconsulta en FROM


También puedes usar subconsultas como tablas temporales.


SELECT *
FROM (
SELECT
Cliente,
SUM(Total) AS TotalGastado
FROM Ventas
GROUP BY Cliente
) AS Resumen
WHERE TotalGastado > 1000;


La subconsulta genera:



Luego la consulta externa filtra:


Solo clientes mayores a 1000


EXISTS (nivel más avanzado)


Verificar si existen registros relacionados.


SELECT DISTINCT Cliente
FROM Ventas v
WHERE EXISTS (
SELECT 1
FROM Ventas
WHERE Cliente = v.Cliente
AND Total > 2000
);



¿Qué devuelve EXISTS?


  1. TRUE → si encuentra registros
  2. FALSE → si no encuentra


Ejercicios


Nivel básico


  1. Mostrar productos con precio mayor al promedio.


SELECT *
FROM Ventas
WHERE Total > (
SELECT AVG(Total)
FROM Ventas
);


Nivel intermedio


Obtener la venta más alta.


SELECT *
FROM Ventas
WHERE Total = (
SELECT MAX(Total)
FROM Ventas
);


Nivel entrevista real


Mostrar clientes cuyo gasto total sea mayor a 2000.


SELECT *
FROM (
SELECT
Cliente,
SUM(Total) AS TotalGastado
FROM Ventas
GROUP BY Cliente
) AS Datos
WHERE TotalGastado > 2000;


Ejercicio tipo empresa


Obtener:

  1. Clientes con compras superiores al promedio
  2. Ordenados de mayor a menor


SELECT
Cliente,
Total
FROM Ventas
WHERE Total > (
SELECT AVG(Total)
FROM Ventas
)
ORDER BY Total DESC;


Buenas prácticas


  1. Usa subconsultas cuando simplifiquen lógica
  2. Usa alias claros
  3. Prefiere EXISTS para validaciones
  4. Evita subconsultas excesivas en sistemas grandes



Sobre el autor

J. Panduro es desarrollador de software y creador de HPanduDigital. Comparte contenido sobre Desarrollo Web, inteligencia artificial, y transformación digital, basado en experiencias reales y proyectos prácticos.

Buscar artículos

Escribe al menos 2 caracteres para buscar.