Вы находитесь на странице: 1из 4

/*1.

- Crear un procedimiento que permita mostrar todas las reservas de


un determinado ao*/
create procedure reserva_por_anio
@anio int
as
begin
select * from reserva where year(FECHA)=@anio
end

execute reserva_por_anio 2011

/*2.- Crear un procedimiento que muestre un mensaje adicional
pertenece a Hotmail
en los registros que tienen como servidor de correo a Hotmail, en caso
contrario
mostrar el mensaje Otros.*/
create procedure servidor_pasajeros
as
begin
select *,
case when email like '%hotmail%' then
'Pertenece a hotmail'
when email like '%gmail%' then
'Otros'
end as "Tipo servidor" from pasajero
end

execute servidor_pasajeros

/*3.- Desarrolle un procedimiento que cuando el mes de reserva sea
marzo, julio o diciembre
se muestre un bono de 100 soles, caso contrario un bono de 10 soles
(debe adicionar una columna a la consulta)*/
create procedure reservas_pasajeros
as
begin
select *,
case when month(fecha) like 03 then
'100'
when MONTH(fecha) like 07 then
'100'
when MONTH(fecha) like 12 then
'100'
when MONTH(fecha) like 01 then
'10'
when MONTH(fecha) like 02 then
'10'
when MONTH(fecha) like 04 then
'10'
when MONTH(fecha) like 05 then
'10'
when MONTH(fecha) like 06 then
'10'
when MONTH(fecha) like 08 then
'10'
when MONTH(fecha) like 09 then
'10'
when MONTH(fecha) like 10 then
'10'
when MONTH(fecha) like 11 then
'10'
end as "Bono" from RESERVA
end

execute reservas_pasajeros

/*4- Desarrolle un procedimiento que muestre el nmero de pasajeros
por pas y un mensaje
que diga visitar solo en aquellos pases que tengan 2 o ms
pasajeros*/
create procedure pasajeros_por_pais
as
begin
select PAI.pais, COUNT(pas.idpasajero) as "Total Pasajeros",
case when COUNT(pas.idpasajero)=1 or COUNT(pas.idpasajero)=0 then
''
else
'Visitar solo aquellos paises que tengan 2 o mas pasajeros'
end as mensaje
from PAIS pai left join pasajero pas on pas.idpais=pai.idpais
group by pai.pais
end

execute pasajeros_por_pais

/*5.- Desarrolle un procedimiento que baje el costo de las reservas en
100 soles*/
create procedure reduccion_de_costo
as begin
update reserva
set costo = costo - 100
end

execute reduccion_de_costo

/*6 Desarrolle un procedimiento que presente el total de pagos de los
pasajeros
de un determinado pas.*/
create procedure pago_por_pasajero_pais
as
begin
select pai.pais as[pais], SUM(monto) as [monto acumulado]
from PASAJERO pas
join PAIS pai on pas.IDPAIS=pai.IDPAIS
join PAGO pag on pas.IDPASAJERO =pag.IDPASAJERO
group by pai.PAIS
end

execute pago_por_pasajero_pais

/*7.- Desarrolle un procedimiento que muestre los 5 costos ms bajos
registrados
en la tabla reserva.*/
create procedure costos_masbajos_reserva
@precio int
as
begin
set rowcount @precio
select * from RESERVA order by RESERVA.COSTO asc
end

execute costos_masbajos_reserva 5

/*8.- Desarrolle un procedimiento que muestre el monto acumulado por
aos desde la tabla pago.*/
create procedure pago_por_ao
as
begin
select YEAR(fecha) as "Ao", SUM(monto) as "Cantidad Pagada"from PAGO
group by year(fecha)
end

execute pago_por_ao

/*9.- Implemente un procedimiento que permita registrar a un nuevo
pasajero. Para este caso
debe definir como parmetros todos los datos necesarios para registrar
un nuevo pasajero
pero debe ingresar el nombre del pas de manera que si este pas no
existe debe aparecer
un mensaje PAIS NO EXISTE. Finalmente si el registro tuvo xito se
muestra un mensaje
Proceso ejecutado correctamente*/

create procedure registrar_pasajero
@codpasajero char(5),
@nombre varchar(50),
@pais varchar(30),
@telefono char(15),
@email varchar(50)
as
declare @codpais char(4)=(select idpais from PAIS where PAIS =@pais)
declare @mensaje varchar(60)
if exists(select idpais from PAIS where PAIS= @pais)
begin
insert into pasajero(idpasajero,nombres,idpais,telefono,email)values
(@codpasajero,@nombre,@codpais,@telefono,@email)
set @mensaje ='Proceso ejecutado Correctamente'
print @mensaje
end
else
begin
set @mensaje='Pais no existe'
print @mensaje
end

execute registrar_pasajero 'P0014','Marta Castillo
Jimenes','brasil','15263538','MART@HOTMAIL.COM'
select * from PASAJERO


/*10.- Crear un procedimiento almacenado que muestre el total de
reservas de un determinado
pas ingresando el nombre del pas. Si el pas no existe mostrar un
mensaje
PAIS NO REGISTRADO EN LA BASE DE DATOS*/

create procedure total_reservas
@pais varchar(30)
as
declare @mensaje varchar(40)
if exists(select idpais from pais where pais = @pais)
begin
select count(*) as 'cantidad de reservas' from pago
where idpasajero in (select idpasajero from pasajero p inner join pais
pa on p.idpais = pa.idpais where pa.pais = @pais )
end
else
begin
set @mensaje = 'pais no registrado en la base de datos'
print @mensaje
end

execute total_reservas 'BRASIL'

Вам также может понравиться