EP2 1331 ProAvaBD
EP2 1331 ProAvaBD
EP2 1331 ProAvaBD
Pregunta 1
En Northwind, presentar el monto de ventas por región y categoría, (lo que se vendió en cada región
por cada categoría).
Para las regiones norte y sur, durante el primer semestre de 1997.
USE NORTHWIND
GO
SELECT
R.RegionDescription AS REGION,
ROUND(SUM(OD.UnitPrice*OD.Quantity*(1-OD.Discount)),2) AS MONTO,
C.CategoryName AS CATEGORIA
FROM Categories C
INNER JOIN Products P ON C.CategoryID = P.CategoryID
INNER JOIN [Order Details] OD ON P.ProductID = OD.ProductID
INNER JOIN Orders O ON OD.OrderID = O.OrderID
INNER JOIN Employees E ON O.EmployeeID = E.EmployeeID
INNER JOIN EmployeeTerritories ET ON E.EmployeeID = ET.EmployeeID
INNER JOIN Territories T ON ET.TerritoryID = T.TerritoryID
INNER JOIN Region R ON T.RegionID = R.RegionID
WHERE O.OrderDate BETWEEN '19970101' AND '19970630'
GROUP BY R.RegionDescription, C.CategoryName
HAVING R.RegionDescription IN ('Northern','Southern')
ORDER BY 1,3 DESC
GO
Página 1 de 8
Pregunta 2
En MarketPeru crear un SP que verifique si el stock de un producto está por debajo de
una cantidad determinada, para saber si se puede vender a no el producto.
Usar un RETURN Value.
USE MarketPERU
GO
SELECT*FROM PRODUCTO
Página 2 de 8
Pregunta 3
Presentar el total de ventas por región por trimestre del año 1997, en Northwind,
y guardar los resultados en tablas históricas. (hay cuatro trimestres en el año).
SELECT
R.RegionDescription AS REGION,
ROUND(SUM(OD.UnitPrice*OD.Quantity*(1-OD.Discount)),2) AS MONTO
INTO VentasRegion_1997_1er_tri
FROM [Order Details] OD
INNER JOIN Orders O ON OD.OrderID = O.OrderID
INNER JOIN Employees E ON O.EmployeeID = E.EmployeeID
INNER JOIN EmployeeTerritories ET ON E.EmployeeID = ET.EmployeeID
INNER JOIN Territories T ON ET.TerritoryID = T.TerritoryID
INNER JOIN Region R ON T.RegionID = R.RegionID
WHERE O.OrderDate BETWEEN '19970101' AND '19970331'
GROUP BY R.RegionDescription
ORDER BY 2 DESC
GO
SELECT
R.RegionDescription AS REGION,
ROUND(SUM(OD.UnitPrice*OD.Quantity*(1-OD.Discount)),2) AS MONTO
INTO VentasRegion_1997_2do_tri
FROM [Order Details] OD
INNER JOIN Orders O ON OD.OrderID = O.OrderID
INNER JOIN Employees E ON O.EmployeeID = E.EmployeeID
INNER JOIN EmployeeTerritories ET ON E.EmployeeID = ET.EmployeeID
INNER JOIN Territories T ON ET.TerritoryID = T.TerritoryID
INNER JOIN Region R ON T.RegionID = R.RegionID
WHERE O.OrderDate BETWEEN '19970401' AND '19970630'
GROUP BY R.RegionDescription
ORDER BY 2 DESC
GO
SELECT
R.RegionDescription AS REGION,
ROUND(SUM(OD.UnitPrice*OD.Quantity*(1-OD.Discount)),2) AS MONTO
INTO VentasRegion_1997_3er_tri
FROM [Order Details] OD
INNER JOIN Orders O ON OD.OrderID = O.OrderID
INNER JOIN Employees E ON O.EmployeeID = E.EmployeeID
INNER JOIN EmployeeTerritories ET ON E.EmployeeID = ET.EmployeeID
INNER JOIN Territories T ON ET.TerritoryID = T.TerritoryID
INNER JOIN Region R ON T.RegionID = R.RegionID
WHERE O.OrderDate BETWEEN '19970701' AND '19970930'
GROUP BY R.RegionDescription
ORDER BY 2 DESC
GO
SELECT
R.RegionDescription AS REGION,
ROUND(SUM(OD.UnitPrice*OD.Quantity*(1-OD.Discount)),2) AS MONTO
INTO VentasRegion_1997_4to_tri
FROM [Order Details] OD
INNER JOIN Orders O ON OD.OrderID = O.OrderID
INNER JOIN Employees E ON O.EmployeeID = E.EmployeeID
INNER JOIN EmployeeTerritories ET ON E.EmployeeID = ET.EmployeeID
INNER JOIN Territories T ON ET.TerritoryID = T.TerritoryID
INNER JOIN Region R ON T.RegionID = R.RegionID
WHERE O.OrderDate BETWEEN '19971001' AND '19971231'
GROUP BY R.RegionDescription
ORDER BY 2 DESC
GO
Pregunta 4
Crear un Vista anidada de tercer nivel en MarketPeru. La vista de primer nivel debe tener como
origen tres tablas.
SELECT*FROM V_VistaAni1erNivel
GO
Página 4 de 8
CREATE VIEW V_VistaAni2doNivel
AS
SELECT Producto,Nombre,[Producto Guia]
FROM V_VistaAni1erNivel
GO
SELECT*FROM V_VistaAni2doNivel
GO
SELECT*FROM V_VistaAni3erNivel
GO
Pregunta 5
En Pubs. crear un SP que presente la cantidad de ejemplares vendidos de un libro, en un intervalo
de fechas determinado. Mostrar también el nombre del producto. Se debe dar como datos el código
del libro, la fecha inicial del intervalo y la fecha final del intervalo.
USE PUBS
GO
SELECT
T.title_id AS CODIGO,
Página 5 de 8
T.title AS PRODUCTO,
T.ytd_sales AS [CANTIDAD VENDIDA]
FROM titles T
WHERE T.pubdate BETWEEN '19910601' AND '19910630'
GROUP BY T.title,T.title_id,T.ytd_sales
HAVING T.title_id = 'BU1111'
GO
DECLARE
@NAME VARCHAR(50),
@CAN INT
EXEC SPU_LIBROS_VENDIDOS
BU1111,
'19910601',
'19910630',
@NAME OUTPUT,
@CAN OUTPUT
SELECT @NAME Nombre,@CAN Cantidad;
Página 6 de 8
Pregunta 6
Crear un SP en Northwind que presente una lista de pedidos de un cliente determinado en una
categoría determinada, también se debe presentar el número del pedido, el nombre del cliente, el
nombre de la categoría, el nombre del producto vendido, la cantidad vendida, el precio de venta y el
subtotal de la venta.
USE Northwind
GO
SELECT*FROM Customers
SELECT
O.OrderID AS Orden,
C.CompanyName AS [Nombre de Compañia],
CA.CategoryName AS [Nombre de Categoria],
P.ProductName AS Producto,
OD.Quantity AS Cantidad,
OD.UnitPrice AS Precio,
ROUND(SUM(OD.Quantity * OD.UnitPrice * (1 - OD.Discount)),2) AS Subtotal
FROM Customers C
INNER JOIN Orders O ON C.CustomerID = O.CustomerID
INNER JOIN [Order Details] OD ON O.OrderID = OD.OrderID
INNER JOIN Products P ON OD.ProductID = P.ProductID
INNER JOIN Categories CA ON P.CategoryID = CA.CategoryID
WHERE O.CustomerID = 'BERGS' AND P.CategoryID = 2
GROUP BY O.OrderID,C.CompanyName,CA.CategoryName,P.ProductName,OD.UnitPrice,OD.Quantity
GO
EXEC Lista_Pedidos'BERGS',2
Página 7 de 8
Copiar el código en este documento y Subir el archivo de este Word con la solución incluida.
Página 8 de 8