El blog donde aprenderás lingüística formal, política, economía y filosofía desde un enfoque estructural desde lo más fácil hasta lo más difícil, en lenguaje diáfano y accesible para todos.
Ejercicios para practicar SQL con la base de datos Northwind
Aquí les traigo una guía de ejercicios para practicar el lenguaje SQL con la
base de datos de Northwind (una vez que lo hayan resuelto en su navegador,
haciendo clic en la consigna se desplegará la respuesta correcta para que
puedan comparar). También les dejo la versión más actualizada que encontré
en la nube de esta antigua (y excelentísima) base de datos de Microsoft.
(Para quienes quieran aprender SQL desde cero por supuesto siempre
recomiendo los videos del gran maestro YouTuber Lucas Dalto)
CONSULTAS EN SQL CON NORTHWIND (si haces click en la consigna, te
aparecerá la solución)
Seleccionar los clientes que viven en el país de "USA".
SELECT*FROMCustomers WHERECountry= 'USA'
Seleccionar los proveedores que viven en la ciudad de "BERLÍN".
SELECT*FROMSuppliers WHERECity= 'BERLIN'
Seleccionar los empleados con códigos 3, 5 y 8.
SELECT*FROMEmployees WHEREEmployeeIDin(3,5,8);
Seleccionar los productos que tienen stock mayor que cero y son del
proveedor 1, 3 y 5.
Mostrar el nombre del producto, el precio, el código del proveedor y el
nombre de la compañía proveedora.
SELECTProductName, UnitPrice,
P.SupplierID,
CompanyName FROMProducts AS P INNER JOINSuppliers AS S ONS.SupplierID=P.SupplierID;
Mostrar el número de orden, el código del producto, el precio, la cantidad
y el total pagado por producto.
SELECTOrderID, ProductID,
UnitPrice, Quantity,
(UnitPrice*Quantity) AS TOTAL FROM[Order Details];
Mostrar el número de la orden, fecha, código del producto, precio, código
del empleado y su nombre completo.
SELECTO.OrderID, OrderDate,
ProductID, UnitPrice,
O.EmployeeID, (lastname+' '+FirstName) FROMOrders AS O INNER JOIN[Order Details] AS D ONO.OrderID=D.OrderID INNER JOINEmployees AS E ONE.EmployeeID=O.EmployeeID;
Mostrar los 10 productos con menor stock.
SELECT TOP 10
* FROMProducts ORDER BYUnitsInStock;
Mostrar los 10 productos con mayor stock.
SELECT TOP 10
* FROMProducts ORDER BYUnitsInStockDesc;
Mostrar los 10 productos con mayor precio.
SELECT TOP 10
* FROMProducts ORDER BYUnitPriceDesc;
Mostrar los 10 productos más baratos.
SELECT TOP 10
* FROMProducts ORDER BYUnitPrice;
Seleccionar todos los campos de la tabla clientes, ordenar por compañía.
SELECT*FROMCustomers ORDER BYCompanyName;
Seleccionar todos los campos de clientes, cuya compañía empiece con la
letra B y pertenezcan a UK. Ordenar por nombre de la compañía.
SELECT*FROMCustomers WHERECompanyNameLIKE'B%'ANDCountry='UK' ORDER BYCompanyName;
Seleccionar todos los campos de productos de las categorías 1, 3 y 5.
Ordenar por categoría.
SELECT*FROMProductsWHERECategoryIDIN(1,3,5) ORDER BYCategoryID;
Seleccionar los productos cuyos precios unitarios están entre 50 y 200.
SELECT*FROMProducts WHEREUnitPriceBETWEEN 50
AND
200;
Visualizar el nombre y el id de la compañía del cliente, fecha, precio
unitario y producto de la orden.
SELECT
CompanyName, O.CustomerID,
O.OrderDate, OD.UnitPrice,
P.ProductName FROMCustomers AS C INNER JOINOrders AS O ONC.CustomerID=O.CustomerID INNER JOIN[Order Details] AS OD ONO.OrderID=OD.OrderID INNER JOINProducts AS P ONP.ProductID=OD.ProductID;
Visualizar el nombre de la categoría y el número de productos que hay por
cada categoría.
SELECTCategoryName, COUNT(*) AS 'TOTAL RODUCTOS' FROMCategories AS C INNER JOINProducts AS P ONC.CategoryID=P.CategoryID GROUP BYCategoryName;
Seleccionar los 5 productos más vendidos.
SELECT TOP 5ProductName,
SUM(Quantity) FROM[Order Details] AS D INNER JOINProducts AS P OND.ProductID=P.ProductID GROUP BYProductName ORDER BYSUM(Quantity);
Seleccionar los jefes de los empleados.
SELECTReportsTo, LastName
|| ' ' || FirstName AS NOMBRE FROMEmployees WHEREReportsToIS NOT NULL;
Obtener todos los productos cuyo nombre comienza con M y tienen un precio
comprendido entre 28 y 129.
Obtener todas las órdenes hechas por el empleado King Robert.
SELECTO.OrderID, O.EmployeeID, lastname
|| ' ' || FirstName
AS EmployeeFullName FROMOrders AS O INNER JOINEmployees AS E ONO.EmployeeID = E.EmployeeIDWHERE(E.lastname
|| ' ' || E.FirstName) = 'King Robert';
Obtener todas las órdenes por el cliente cuya compañía es "Que delicia".
SELECTO.OrderID, O.CustomerID,
CompanyName FROMOrders AS O INNER JOINCustomers AS C ONO.CustomerID = C.CustomerIDWHEREO.CustomerID= 'QUEDE';
Obtener todas las órdenes hechas por el empleado King Robert, Davolio
Nancy y Fuller Andrew.
SELECTO.OrderID, O.EmployeeID,
(lastname || ' ' || FirstName)
AS EmployeeFullName FROMOrders AS O INNER JOINEmployees AS E ONO.EmployeeID = E.EmployeeID WHERE(E.lastname || ' ' || E.FirstName)IN('King Robert', 'Davolio Nancy', 'Fuller Andrew');
Obtener todos los productos (código, nombre, precio, stock) de la orden
10257.
SELECTOD.ProductID,
P.ProductName,
P.UnitPrice, P.UnitsInStock FROMProducts AS P JOIN'Order Details' AS OD ONOD.ProductID = P.ProductID WHEREOD.OrderID= 10257;
Obtener todos los productos (código, nombre, precio, stock) de las órdenes
hechas desde 2017 hasta la fecha de hoy.
SELECTOD.ProductID,
P.ProductName,
P.UnitPrice, P.UnitsInStock, O.OrderDate FROMProducts AS P JOIN'Order Details' AS OD ONOD.ProductID = P.ProductID JOINORDERS AS O ONOD.OrderID = O.OrderID WHEREO.OrderDate> '2017-01-01';
Calcular los 15 productos más caros.
SELECT TOP 15 * FROMProducts ORDER BYUnitPriceDesc;
Calcular los 5 productos más baratos.
SELECT TOP 5 * FROMProducts ORDER BYUnitPrice;
Obtener el nombre de todas las categorías y los nombres de sus productos,
precio y stock.
SELECTCategoryName,
ProductName, UnitPrice,
UnitsInStock FROMCategories AS C INNER JOINProducts AS P ONC.CategoryID = P.CategoryID;
Calcular el stock de productos por cada categoría, sin contabilizar los
productos que cuyo nombre comience con la letra P.
SELECTC.CategoryName,
SUM(P.UnitsInStock) AS StockByCategory FROMCategories AS C JOINProducts AS P ONC.CategoryID = P.CategoryID WHEREP.ProductName NOT LIKE 'p%' GROUP BYC.CategoryName ORDER BYC.CategoryName;
Obtener el nombre del cliente, nombre del proveedor, nombre del empleado y
el nombre de los productos que están en la orden 10794.
SELECTO.OrderID, C.CompanyName,
S.CompanyName,
E.FirstName,
P.ProductName FROMCustomers AS C INNER JOINOrders AS O ONC.CustomerID = O.CustomerID INNER JOINEmployees AS E ONO.EmployeeID = E.EmployeeID INNER JOIN[Order Details] AS OD ONO.OrderID = OD.OrderID INNER JOINProducts AS P ONP.ProductID = OD.ProductID INNER JOINSuppliers AS S ONS.SupplierID = P.SupplierID WHEREO.OrderID= 10794;
Mostrar el número de órdenes de cada uno de los clientes por año, luego
ordenar código del cliente y el año.
SELECTCustomerID,YEAR(OrderDate),
COUNT(*) FROMOrders GROUP BYCustomerID, YEAR(OrderDate) ORDER BYCustomerID, YEAR(OrderDate);
Contar el número de órdenes que se han realizado por años y meses, luego
debe ser ordenado por año y por mes.
SELECTYEAR(OrderDate),
COUNT(*) FROMOrders GROUP BYYEAR(OrderDate),
MOUNTH(OrderDate) ORDER BYYEAR(OrderDate),
MOUNTH(OrderDate);
Seleccionar el nombre de la compañía del cliente, el código de la orden de
compra, la fecha de la orden de compra, código del producto, cantidad
pedida del producto, nombre del producto, el nombre de la compañía
proveedora y la ciudad del proveedor, usar Join.
SELECTC.CompanyName, O.OrderID,
O.OrderDate, P.ProductID,
Quantity, P.ProductName,
S.CompanyName, S.City FROMCustomers AS C INNER JOINOrders AS O ONC.CustomerID
= O.CustomerID INNER JOIN[Order Details] AS OD ONO.OrderID = OD.OrderID INNER JOINProducts AS P ONOD.ProductID
= P.ProductID INNER JOINSuppliers AS S ONS.SupplierID
= P.SupplierID;
Seleccionar el nombre de la compañía del cliente, nombre del contacto, el
código de la orden de compra, la fecha de la orden de compra, el código
del producto, cantidad pedida del producto, nombre del producto y el
nombre de la compañía proveedora, usar JOIN. Solamente las compañías
proveedoras que comienzan con la letra de la A hasta la letra G, además la
cantidad pedida del producto debe estar entre 23 y 187.
SELECTC.CompanyName,
C.ContactName, O.OrderID,
O.OrderDate, OD.ProductID,
Quantity, P.ProductName,
S.CompanyName FROMCustomers AS C INNER JOINOrders AS O ONC.CustomerID
= O.CustomerID INNER JOIN[Order Details] AS OD ONOD.OrderID = O.OrderID INNER JOINProducts AS P ONP.ProductID
= OD.ProductID INNER JOINSuppliers AS S ONS.SupplierID
= P.SupplierIDWHERES.CompanyNameLIKE'[A-G]%'ANDQuantityBETWEEN23AND187;
Comentarios
Publicar un comentario