Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --5. Realice una función que reciba como parámetro el Código Equipo, cargue un cursor con
- --todos los datos de los campeonatos en los que participó el equipo, luego debe abrir el
- --cursor, y calcular el importe recaudado en cada campeonato (entradas vendidas * precio
- --entrada), sume el total y cargue la variable que será devuelta por la función.
- create or replace function importe_recaudado(codigo_eq int)
- returns numeric as $$
- declare
- campeonato_cursor cursor for
- select entradas_vendidas, precio_entrada
- from campeonato
- where codigo_equipo = codigo_eq;
- variable_entradas int;
- variable_precio numeric;
- variable_total numeric := 0;
- begin
- open campeonato_cursor;
- loop
- fetch campeonato_cursor into variable_entradas, variable_precio;
- exit when not found;
- variable_total := variable_total + (variable_entradas * variable_precio);
- end loop;
- close campeonato_cursor;
- return variable_total;
- end;
- $$ language plpgsql;
- select importe_recaudado(3);
- --6. Realice una función que reciba como parámetros el nombre del deporte, cargue el cursor
- --con los nombres de las ciudades y las fechas en las cuales se realizaron campeonatos
- --para ese deporte, lea el cursor y grabe esos datos en una tabla denominada
- --“deporte_por_ciudad”
- create table deporte_por_ciudad(nombre_ciudad text,fecha date, deporte text);
- create or replace function registro_deporte(nombred text)
- returns void as $$
- declare
- cursor_infocamp cursor for
- select c.nombre_ciudad, ca.fecha, d.nombre_deporte
- from campeonato ca
- inner join equipo e on ca.codigo_equipo = e.codigo_equipo
- inner join deporte d on e.id_deporte = d.id_deporte
- inner join ciudad c on ca.codigo_ciudad = c.codigo_ciudad
- where d.nombre_deporte = nombred;
- variable_nombre_ciudad text;
- variable_fecha date;
- variable_nombre_deporte text;
- begin
- open cursor_infocamp;
- loop
- fetch cursor_infocamp into variable_nombre_ciudad,variable_fecha,variable_nombre_deporte;
- exit when not found;
- insert into deporte_por_ciudad (nombre_ciudad,fecha,nombre_deporte)
- values(variable_nombre_ciudad,variable_fecha,variable_nombre_deporte);
- end loop;
- close cursor_infocamp;
- end;
- $$language plpgsql;
- --le cambie el nombre a la columna porque en la funcion le asigne otro nombre, se debe respetar los nombres
- --de las columnas
- alter table deporte_por_ciudad
- rename column deporte to nombre_deporte;
- --aca llamo a la funcion y no me va a deolver nada porque le asigna los datos a la tabla que creamos antes
- select registro_deporte('voley');
- --aca llamo a la tabla y me aparecen los datos ya guardados. entonces si quiero ver de otro deporte tengo
- --que volver a llamar a la funcion y colocar el deporte y despues llamar a la tabla y me apareceria actualizada.
- select * from deporte_por_ciudad;
- select registro_deporte('futbol');
- select * from deporte_por_ciudad;
- select registro_deporte('basquet');
- select * from deporte_por_ciudad;
- --7. Realice una función que reciba como parámetros una “Fecha desde” y una “Fecha hasta”,
- --cargue el cursor con los datos de los campeonatos realizados en ese rango de fecha, lea
- --el cursor y grabe dichos datos en la tabla “resumen_campeonato”. Esta última tabla tiene
- --los mismos campos que la tabla campeonato, en la cual no es necesario crear las claves
- --primarias y foráneas.
- select * from campeonato;
- --creo la tabla de resumen campeonato:
- create table resumen_campeonato(
- fecha date,
- entradas_vendidas integer,
- precio_entrada numeric);
- --creo la funcion q va a tener el cursor con el rango de fecha:
- create or replace function campeonato_rango(fechadesde date, fechahasta date)
- returns void as $$
- declare
- rangos cursor for
- select ca.fecha, ca.entradas_vendidas, ca.precio_entrada
- from campeonato ca
- where ca.fecha between fechadesde and fechahasta;
- variable_fecha date;
- variable_entrada int;
- variable_precio numeric;
- begin
- open rangos;
- loop
- fetch rangos into variable_fecha,variable_entrada,variable_precio;
- exit when not found;
- insert into resumen_campeonato(fecha,entradas_vendidas,precio_entrada)
- values(variable_fecha,variable_entrada,variable_precio);
- end loop;
- close rangos;
- end;
- $$language plpgsql;
- --Llamo a la funcion con el rango de fechas:
- select campeonato_rango('03-03-2023','07-03-2023');
- --Llamo a la tabla donde ya va a estar con las fechas cargadas:
- select * from resumen_campeonato
- order by resumen_campeonato;
- --Es importante respetar el desde y hasta es decir, poner primero la fecha menor y luego la mayor
- --sino no lo va a tomar
- select campeonato_rango('08-03-2023','10-03-2023');
- select * from resumen_campeonato
- order by resumen_campeonato;
- --8. Realice un trigger que antes de guardar un nuevo registro en campeonato, cuando el
- --nombre de la ciudad es “Ledesma”, el precio de la entrada permitido para esa ciudad es
- --$35.000.
- create or replace function verificar()
- returns trigger as $$
- begin
- if (select nombre_ciudad from ciudad where codigo_ciudad = new.codigo_ciudad) = 'ledesma' then
- new.precio_entrada := 35000;
- end if;
- return new;
- end;
- $$language plpgsql;
- create trigger validar
- before insert on campeonato
- for each row
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement