EP2 1331 ProAvaBD

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 8

EVALUACION PERMANENTE 2

Curso: Programación Avanzada de Base de Datos

NRC: 1331 Fecha: 23/02/2023 Hora: Duración: 24


Profesor: Flores Manco, Julio Enrique

Apellidos y Nombre del alumno: Javier Thomas Hinostroza Rojas


N O T A
INSTRUCCIONES:
 El alumno debe escribir legiblemente su apellido y nombre, caso contrario no será corregido.
 La evaluación es estrictamente personal.
 Para recibir toda la puntuación, la respuesta debe estar debidamente sustentada. Caso contrario la
puntuación quedará a criterio del profesor.
 En la calificación se considerará el orden, la limpieza y la claridad de las soluciones.
 Cada resultado se sustentará con el código y una imagen de los resultados obtenidos (captura de imagen)

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

CREATE PROCEDURE VERIFICACION_STOCK


@COD INT,
@CAN INT
AS
IF
(SELECT StockActual FROM PRODUCTO WHERE IdProducto = @COD)- @CAN
<=
(SELECT StockMinimo FROM PRODUCTO WHERE IdProducto = @COD)
RETURN 1
ELSE
RETURN 0
GO

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

SELECT * FROM VentasRegion_1997_1er_tri


SELECT * FROM VentasRegion_1997_2do_tri
SELECT * FROM VentasRegion_1997_3er_tri
Página 3 de 8
SELECT * FROM VentasRegion_1997_4to_tri
GO

Pregunta 4
Crear un Vista anidada de tercer nivel en MarketPeru. La vista de primer nivel debe tener como
origen tres tablas.

CREATE VIEW V_VistaAni1erNivel


AS
SELECT
P.IdProducto AS Producto,
P.Nombre AS Nombre,
P.IdProveedor AS Proveedor,
P.IdCategoria AS Categoria,
P.StockActual AS [Stock Actual],
GD.IdProducto AS [Producto Guia],
GD.Cantidad AS Cantidad,
G.IdLocal AS Local,
CONVERT(CHAR(12),G.FechaSalida,103) AS [FECHA SALIDA]
FROM PRODUCTO P
INNER JOIN GUIA_DETALLE GD ON P.IdProducto = GD.IdProducto
INNER JOIN GUIA G ON GD.IdGuia = G.IdGuia
GO

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

CREATE VIEW V_VistaAni3erNivel


AS
SELECT Nombre
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

CREATE PROCEDURE SPU_LIBROS_VENDIDOS


@COD VARCHAR(10),
@DATE1 DATETIME,
@DATE2 DATETIME,
@NAME VARCHAR(50) OUTPUT,
@CAN INT OUTPUT
AS
SELECT
@COD = T.title_id,
@NAME = T.title,
@CAN = T.ytd_sales
FROM titles T
WHERE T.pubdate BETWEEN @DATE1 AND @DATE2
GROUP BY T.title,T.title_id,T.ytd_sales
HAVING T.title_id = @COD
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

CREATE PROCEDURE Lista_Pedidos


@customerID NCHAR(5),
@categoryID INT
AS
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 = @customerID AND P.CategoryID = @categoryID
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.

Criterios de Evaluación del Examen (para ser llenado por el profesor)


Pregunta Puntaje Puntaje
Tema a evaluar (objetivos específicos del curso)
Nro. Máximo Obtenido
1 Crear una consulta 3
2 Crear un Store Procedure 3
3 Crear consultas con salida a tablas 4
4 Crear vistas anidadas 3
5 Crear un Store Procedure 3
6 Crear un Store Procedure 4
Puntaje Total 20

Página 8 de 8

También podría gustarte