Examen Final

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

1.

- Realice el siguiente ejercicio sobre la base de datos Northwind:


• Altere la tabla Employees (utilizando SQL) para agregar un nuevo campo llamado
“codigoemp” (este será el código del empleado) cuyo tipo será varchar(50) y null.
Debe incluir código DDL que realice esta operación de modificación de una tabla.
• A continuación, cree un procedimiento almacenado que reciba como
parámetros de entrada el apellido (LastName), el nombre (FirstName) y el año
de nacimiento (BirthDate).
• El procedimiento almacenado debe generar el código del empleado en base a:
los dos primeros caracteres de su nombre (FirstName) concatenado con el
apellido (LastName), concatenado solo con el año de nacimiento (BirthDate), de
este campo solo debe extraer el año de toda la fecha).
• Una vez obtenido el “codigoemp”, en el mismo procedimiento almacenado, se
deberá insertar en la tabla Employees, en base a los parámetros de entrada y el
“codigoemp” un nuevo registro con estos datos.
Este sería un ejemplo de la llamada al procedimiento almacenado:

ALTER TABLE employees


ADD codigoemp VARCHAR(50) null
go

CREATE PROCEDURE SPU_INSERTA


@lastname varchar(50), @firstname varchar(50),@birthdate date
AS
BEGIN
INSERT INTO Employees (LastName,FirstName,BirthDate,codigoemp)
VALUES(@lastname, @firstname,@birthdate,
CONCAT(LEFT(@firstname,2),@lastname,YEAR(@birthdate)));
END
GO

SPU_INSERTA 'GUISBERT','CARLOS','1977/03/27'

2.- Realice un procedimiento almacenado que permita generar un reporte de ordenes


de ventas por cliente, entre un año inicial y final (parámetros por defecto de entrada
que deben tener como valor para el año inicial 1996 y para el año final 1996). El
procedimiento almacenado debe listar el id del cliente (CustomerID), el nombre del
cliente (CompanyName), la ciudad (City), el país (Country) y la cantidad de ordenes
vendidas por cliente y el monto total por cliente todas las columnas deben tener alias
de columna descriptivas asimismo ordene los resultados por el nombre del cliente.
Debe
llamar al procedimiento almacenado con parámetros y sin parámetros, así como el
resultado capturado en una imagen. (PUNTAJE 2 PUNTOS)
CREATE PROC PAU_REPORTEORDEN
@anioi int=1996, @aniof int=1996
as
BEGIN
SELECT c.CustomerID as 'ID cliente',c.CompanyName as 'Nombre de Cliente',c.City
as 'Ciudad',c.Country as 'Pais',
count(*) as 'Cantidad Total', SUM(od.UnitPrice*od.Quantity) as 'Monto Total'
FROM Customers as c inner join Orders as o on o.CustomerID=c.CustomerID
inner join [Order Details] as od on od.OrderID=o.OrderID
inner join Products as p on p.ProductID=od.ProductID
where year(o.OrderDate) between @anioi and @aniof
GROUP BYc.CustomerID,c.CompanyName,c.City,c.Country
ORDER BYc.CompanyName
end
go

PAU_REPORTEORDEN
Go

3.- Realice una función tabla multisentencia que permita generar un reporte de
ordenes
de ventas por cliente, entre un año inicial y final (parámetros de entrada). La función
debe listar el id del cliente (CustomerID), el nombre del cliente (CompanyName), la
ciudad (City), el país (Country) y la cantidad de ordenes vendidas por cliente y el monto
total por cliente. Llame a la función para visualizar los resultados. (PUNTAJE 2
PUNTOS)

CREATE FUNCTION DBO.REPORTEVENTAS(@anioi INT,@aniof INT)


RETURNS @TABLA TABLE(ID CHAR(5),Nombre_Cliente VARCHAR(50),Ciudad VARCHAR(50),
Pais VARCHAR(50),Cantidad_Total INT,Monto_Total DECIMAL)
AS
BEGIN
INSERT INTO @TABLA
SELECT c.CustomerID,c.CompanyName,c.City,c.Country,
count(*), SUM(od.UnitPrice*od.Quantity)
FROM Customers as c inner join Orders as o on o.CustomerID=c.CustomerID
inner join [Order Details] as od on od.OrderID=o.OrderID inner join Products as p
on p.ProductID=od.ProductID
where year(o.OrderDate) between @anioi and @aniof
GROUP BYc.CustomerID,c.CompanyName,c.City,c.Country
ORDER BYc.CompanyName
RETURN
end
go

SELECT * FROM DBO.REPORTEVENTAS(1996,1998)


ORDER BYNombre_Cliente
GO

4.- Realice un procedimiento almacenado que muestre un reporte de ordenes de


ventas de cada producto que se solicitó de una categoría ingresada como parámetro
de entrada (CategoryID). El procedimiento almacenado debe listar el nombre de la
categoría (CategoryName), el año de la orden (solo año), el nombre del producto
(ProductName) y el monto total. Se debe ordenar por categoría (CategoryName), por
el nombre del producto (ProductName) y el año de la orden.
En resumen, debe realizar el reporte de Facturación de cada producto que se solicitó
de un CategoryID ingresado como parámetro, detallado por año. Por ejemplo, si se
envía el CategoryID=1 algunos de los resultados se muestran en la siguiente imagen:
(PUNTAJE 2 PUNTOS)

CREATE PROC PAU_ORDENES


@Cat int
as
BEGIN
SELECT c.CategoryName as 'Nombre categoria', year(o.OrderDate) as 'Año',
p.ProductName as 'Nombre de Producto',
count(*) as 'Cantidad Total', SUM(od.UnitPrice*od.Quantity) as 'Monto Total'
FROM Categories as c inner join Products as p on c.CategoryID=p.CategoryID
inner join [Order Details] as od on od.ProductID=p.ProductID inner join Orders as
o on o.OrderID=od.OrderID
where @Cat=c.CategoryID
GROUP BYc.CategoryName, o.OrderDate,p.ProductName
ORDER BYc.CategoryName, P.ProductName, o.OrderDate
end
go

EXEC PAU_ORDENES '1'


Go

5.- Realice un procedimiento almacenado que liste el total facturado por categorías, el
resultado será el siguiente: (PUNTAJE 1 PUNTOS)
CREATE PROC PAU_FACTURACION
as
BEGIN
SELECT c.CategoryName as 'Categoria',
SUM(od.UnitPrice*od.Quantity) as 'Monto Total'
FROM Orders as o inner join [Order Details] as od on od.OrderID=o.OrderID
inner join Products as p on p.ProductID=od.ProductID
inner join Categories as c on c.CategoryID=p.CategoryID
GROUP BYc.CategoryName
ORDER BYc.CategoryName
end
go

PAU_FACTURACION

También podría gustarte