Está en la página 1de 5

CENTRO DE GESTIÓN DE MERCADOS, LOGÍSTICA Y TECNOLOGÍAS DE LA

INFORMACIÓN

ANÁLISIS Y DESARROLLO DE SISTEMAS DE INFORMACIÓN

Módulo
Desarrollo de Bases de datos

Taller Procedimientos almacenados 1

Presentado a:
Sandra Rueda
Instructor

Presentado por:
Yessica Yubely Rodríguez Villarraga

Orden:
40130
Cuerpo de desarrollo

Usando la base de datos Terminal

1. Procedimiento almacenado (Store Procedure) para consultar los datos del


último viaje registrado.
Créelo así:
use Terminal
go

Create procedure ConsultarViaje -- crea el SP, con un nombre


As --inicia la instrucción de la consulta
select top 1 * -- creamos la sentencia sql de normal
from viajes
order by vi_fechviaje desc
go -- finaliza la instrucción, en este caso la creacion del SP

Pruébelo así:

sp_executesql ConsultarViaje

-- se utiliza la instrucción
sp_executesql seguida del nombre del SP

2. La empresa quiere premiar al conductor que mas cantidad de viajes ha


hecho, para lo cual, requiere ver el nombre del conductor y la dirección del
mismo para poder enviar el premio a su lugar de residencia.

use terminal
go
Create procedure ConsultarViajes
As
select top 1 co_nombconduc, co_direconduc, COUNT (vi_numrecorr)as
recorridos
from viajes, conductores
group by co_nombconduc, co_direconduc
go
sp_executesql ConsultarViajes

3. La empresa va a sacar de circulacion los buses que hayan sido fabricados


antes de 1995 siempre y cuando la cantidad de viajes realizados supere los
60, para confirmar la informacion desean ver la placa, la fecha de
fabricacion del bus y la cantidad de viajes que ha hecho.
use terminal
go
Create procedure ConsultarViajes
As
select bu_placa, bu_fechfabri, COUNT (vi_numrecorr) as Recorridos
from Buses b inner join Viajes v on b.bu_placa = v.vi_placa
where year (bu_fechfabri) <1995
group by bu_placa, bu_fechfabri
having COUNT (vi_numrecorr)>60
go
sp_executesql ConsultarViajes

Usando la base de datos Northwind

4. El gerente de recursos humanos debe tener disponible la información de


cuales de sus empleados ya están pensionados, esto quiere decir que ya
cumplieron 60 años, en el procedimiento almacenado, utilice la siguiente
sintaxis SQL para hallar la edad.

use Northwind
go
Create procedure pensionados
As
select LastName, FirstName , DATEDIFF(YEAR,BirthDate,GETDATE()) as
Edad,
(DATEDIFF(YEAR,BirthDate,GETDATE())- 60) as [Tiempo Pensionado]
from Employees
where (DATEDIFF(YEAR,BirthDate,GETDATE()))>60
go
sp_Executesql pensionados

5. El área de recursos humanos debe pasar el reporte anual de cuales de sus


empleados están próximos a pensionarse, este reporte muestra el nombre
completo del empleado y el tiempo de servicio en años que lleva y el
numero de años que falta para pensionarse, únicamente muestra aquellos
que tengan entre 55 y 59 años de edad y al menos 17 años de servicio.

use Northwind
go
Create procedure próximas _pensiones
As
Select LastName, FirstName, DATEDIFF(YEAR,BirthDate,GETDATE()) as
Edad,
DATEDIFF(YEAR,HireDate,GETDATE())as [Tiempo Servicio], (60
-DATEDIFF(YEAR,BirthDate,GETDATE()) ) as [Tiempo Faltante]
From Employees
where(DATEDIFF(YEAR,BirthDate,GETDATE())) > = 55 and
(DATEDIFF(YEAR,BirthDate,GETDATE())) <= 59 and
DATEDIFF(YEAR,HireDate,GETDATE()) >= 17
go
sp_executesql próximas _pensiones

6. El área de compras requiere generar un reporte diario con los datos de los
productos que deben pedir; para ello quieren visualizar el nombre del
producto, precio unitario, el precio promedio en ventas y la diferencia entre
el precio unitario y el precio promedio en ventas, todo esto siempre y
cuando el producto no se encuentre descontinuado.

use Northwind
Go
Create Procedure Reporte
as

select P.ProductName,P.UnitPrice, Avg (Od.UnitPrice) As


Prom_Precio,(P.UnitPrice - Avg (Od.UnitPrice)) as Diferencia
from Products P inner Join [Order Details] Od on P.ProductID =
Od.ProductID
where Discontinued like 0
Group by P.ProductName,P.UnitPrice
Go

Sp_executesql Reporte

7. Ejecute la siguiente sentencia SQL y observe lo que sucede :

DECLARE
@codigo CHAR(5),
@compras money

SET @codigo = 'AROUT'


SET @compras = (
SELECT SUM(Quantity*UnitPrice)
FROM Orders O inner join [order Details] OD
ON O.OrderID = OD.OrderID
WHERE CustomerID = @codigo)
PRINT ('Total de compras:'+ STR(@compras))

8. Redacte la sentencia que permita ver en pantalla el monto total de ventas


del empleado con código 8 durante el año 1997 y la diferencia entre el
monto total de ventas del mismo empleado menos lo que vendió en 1997.
Se sugiere declarar tres variables para distribuirlas así:

1. Llamar el código del empleado


2. Almacenar la ventas del año 1997
3. Almacenar la diferencia entre el total vendido menos lo vendido en 1997

DECLARE
@cod int,
@ventas money,
@diferencia money

SET @cod = 8
SET @ventas =(select SUM((OD.UnitPrice * Quantity)-Discount)As Ventas
from Employees E inner join Orders O on E.EmployeeID =
O.EmployeeID
inner join [Order Details]OD on O.OrderID = OD.OrderID
Where E.EmployeeID = 8)
SET @diferencia = (select((SUM ((UnitPrice*Quantity)-Discount))-(select
SUM((OD.UnitPrice * Quantity)-Discount)
from Employees E inner join Orders O on E.EmployeeID =
O.EmployeeID
inner join [Order Details]OD on O.OrderID = OD.OrderID
Where E.EmployeeID = 8) ) From Employees E inner join Orders O
on E.EmployeeID = O.EmployeeID
inner join [Order Details]OD on O.OrderID = OD.OrderID)

PRINT ('Total de Ventas Empleado:'+ STR(@ventas))


PRINT ('Total Diferencia:' + STR (@diferencia))

También podría gustarte