Subconsultas en SQL Server

En este art铆culo te muestro como construir algunas subconsultas utilizando la base de datos Northwind que Microsoft ofrece de forma gratuita en su repositorio GitHub, as铆 que sin m谩s comenzamos.

Lo primero que debe hacer es descargar y restaurar la base de datos, la descarga puede realizarla  desde el sitio de GitHub, y una vez restauradas puedes probar las consultas siguientes:

  1. Obtener el nombre de todos los productos que han sido ordenados por lo menos una vez:
SELECT ProductName
FROM Products
WHERE ProductID IN (SELECT ProductID FROM OrderDetails);
  1. Obtener los nombres de los empleados que tienen el mismo t铆tulo que el empleado con ID 2:
SELECT FirstName, LastName
FROM Employees
WHERE TitleOfCourtesy = (SELECT TitleOfCourtesy FROM Employees WHERE EmployeeID = 2);
  1. Obtener el nombre y el precio unitario de los productos que tienen un precio superior al promedio de todos los productos:
SELECT ProductName, UnitPrice
FROM Products
WHERE UnitPrice > (SELECT AVG(UnitPrice) FROM Products);
  1. Obtener los nombres de los clientes que han realizado 贸rdenes en el a帽o 1997:
SELECT ContactName
FROM Customers
WHERE CustomerID IN (SELECT CustomerID FROM Orders WHERE YEAR(OrderDate) = 1997);
  1. Obtener el nombre y el precio unitario de los productos que han sido ordenados por el cliente con ID 1:
SELECT ProductName, UnitPrice
FROM Products
WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE OrderID IN (SELECT OrderID FROM Orders WHERE CustomerID = 1));
  1. Obtener el nombre de la categor铆a y el n煤mero de productos asociados a cada categor铆a:
SELECT CategoryName, (SELECT COUNT(*) FROM Products WHERE CategoryID = Categories.CategoryID) AS ProductCount
FROM Categories;
  1. Obtener los nombres de los productos que no han sido ordenados por ning煤n cliente:
SELECT ProductName
FROM Products
WHERE ProductID NOT IN (SELECT ProductID FROM OrderDetails);
  1. Obtener los nombres de los empleados que tienen al menos un subordinado:
SELECT FirstName, LastName
FROM Employees
WHERE EmployeeID IN (SELECT ReportsTo FROM Employees);
  1. Obtener el nombre de los empleados que tienen el mismo t铆tulo que al menos otro empleado:
SELECT FirstName, LastName
FROM Employees
WHERE TitleOfCourtesy IN (SELECT TitleOfCourtesy FROM Employees GROUP BY TitleOfCourtesy HAVING COUNT(*) > 1);
  1. Obtener el nombre de los clientes que han realizado 贸rdenes por un total superior a la media de todos los pedidos:
SELECT ContactName
FROM Customers
WHERE CustomerID IN (SELECT CustomerID FROM Orders GROUP BY CustomerID HAVING SUM(TotalAmount) > (SELECT AVG(TotalAmount) FROM Orders));

Recuerda que estos ejemplos asumen que tienes la base de datos Northwind correctamente configurada en tu sistema de gesti贸n de bases de datos y que est谩s ejecutando las consultas en un entorno compatible con SQL.

Deja una respuesta