SQL SERVER 2012
EXAMEN FINAL
Crear los siguientes procedimientos almacenados trabajando con la Base de Datos Northwind: 5 puntos
1. Listar los clientes según el cargo que desempeñan, para ello deberá ingresar todo o parte del cargo como parámetro.
CREATE PROCEDURE SP_LISTAR_CLIENTES @CARGO nvarchar nvarchar( (50) 50) as SELECT ContactName ContactName, , ContactTitle FROM dbo dbo. .Customers WHERE ContactTitle ContactTitle= =@CARGO like '%' '%'+ +@CARGO @CARGO+ +'%'
2. Listar todos los empleados mostrando un campo Nom_Ape que muestre el nombre y apellidos juntos y un campo c ampo Edad que presente la edad actual de cada empleado. Mostrar ordenado por Edad de forma descendente. CREATE PROCEDURE SP_LISTAR_EMPLEADOS SP_LISTAR_EMPLEADOS AS Select (FirstName+ FirstName+LastName) LastName) as as Nom_Ape Nom_Ape, , DATEDIFF DATEDIFF( (YEAR YEAR, ,BirthDate, BirthDate,GETDATE GETDATE()) ()) -(CASE -( CASE WHEN DATEADD( DATEADD (YY, YY,DATEDIFF DATEDIFF( (YEAR YEAR, ,Employees. Employees.BirthDate, BirthDate,GETDATE GETDATE()), ()),Employees Employees. .BirthDate)> BirthDate)>GET GET DATE() DATE () THEN 1 ELSE 0 END) END ) as as Edad Edad from Employees from Employees
3. Procedimiento que permita actualizar los precios de los productos para ello deberá ingresar el nombre de categoría del producto y el porcentaje de incremento o decremento en decimales. CREATE PROCEDURE SP_ACTUALIZAR_PRECIOS SP_ACTUALIZAR_PRECIOS @NOMBRE nvarchar nvarchar( (20), 20), @POR_INCRE_DECRE decimal decimal( (4) AS UPDATE Products UPDATE Products SET UnitPrice SET UnitPrice = (UnitPrice*( UnitPrice*(@POR_INCRE_DECRE @POR_INCRE_DECRE/ /100)+ 100)+UnitPrice UnitPrice) ) WHERE CategoryID WHERE CategoryID = @NOMBRE
Ing. Félix Guevara Gamboa
-1-
http://www.bitinformaticgroup.com
SQL SERVER 2012
EXAMEN FINAL
4. Mostrar la relación de productos entre un rango de precios, para ello solo deberá ingresar el precio inicial y el precio final (se incluyen los precios ingresados). 4.1. Además deberá mostrar una columna “Obs” que presente lo siguiente: 4.2. De $0 a $10 Accesible 4.3. + $10 a $50 Comercial 4.4. + $50 a $150 Preferente 4.5. +150 Poco Accesible CREATE PROCEDURE SP_RELACION_PRODUCTO_PRECIO @PRECIO_INI money, @PRECIO_FIN money AS SELECT *, CASE WHEN UnitPrice between 0 and 10 THEN 'Accesible' WHEN UnitPrice between 10 and 50 THEN 'Comercial' WHEN UnitPrice between 50 and 150 THEN 'Preferente' WHEN UnitPrice > 150 THEN 'Poco Accesible' END AS Obs FROM Products WHERE UnitPrice=@PRECIO_INI AND UnitPrice=@PRECIO_FIN
5. Crear un procedimiento almacenado que liste los 3 mejores meses de venta del año 1997, donde los meses deberá aparecer con nombre literales. Ejm (Enero, Febrero,… etc.)
CREATE PROCEDURE SP_TOP_3_VENTAS AS SELECT TOP 3 dbo.[Order Details].Quantity, CASE WHEN MONTH(Orders.ShippedDate) = 1 then 'Enero' WHEN MONTH(Orders.ShippedDate) = 2 then 'Febrero' WHEN MONTH(Orders.ShippedDate) = 3 then 'Marzo' WHEN MONTH(Orders.ShippedDate) = 4 then 'Abril' WHEN MONTH(Orders.ShippedDate) = 5 then 'Mayo' WHEN MONTH(Orders.ShippedDate) = 6 then 'Junio' WHEN MONTH(Orders.ShippedDate) = 7 then 'Julio' WHEN MONTH(Orders.ShippedDate) = 8 then 'Agosto' WHEN MONTH(Orders.ShippedDate) = 9 then 'Setiembre' WHEN MONTH(Orders.ShippedDate) = 10 then 'Octubre' WHEN MONTH(Orders.ShippedDate) = 11 then 'Noviembre' WHEN MONTH(Orders.ShippedDate) = 12 then 'Diciembre' end as Mes FROM dbo.[Order Details] INNER JOIN dbo.Orders ON dbo.[Order Details].OrderID = dbo.Orders.OrderID WHERE Orders.ShippedDate = '1997' EXEC SP_TOP_3_VENTAS '3'
Ing. Félix Guevara Gamboa
-2-
http://www.bitinformaticgroup.com