ayudantia sql
DESCRIPTION
ejercicios resueltos funciones, consultas, procedimientos, sqlTRANSCRIPT
Ayudantía: consultas, procedimientos y funciones en SQL
Curso: Sistema de Información Empresarial
Profesor: Cristian Salazar
Integrantes:
Carlos Mancilla
Valdivia, Junio de 2012.
Carlos Mancilla – Ing. Comercial
Ejercicios Propuestos: 1.- Realice una cadena de inserciones, esto es: - Crear un procedimiento para agregar Ciudades.
- Crear un procedimiento para agregar Campus.
- Crear un procedimiento para agregar Carreras
- Crear un procedimiento para agregar Estudiantes.
create or replace procedure agrega_ciudad(id_ciudad in number, nom_ciudad in varchar2)is
begin
insert into ciudad (id_ciudad, nombre)
values (id_ciudad, nom_ciudad);
commit;
end agrega_ciudad;
create or replace procedure agrega_campus(id_campus in number, nom_campus in varchar2, id_ciudad in number)is
begin
insert into campus (id_campus, nombre, id_ciudad)
values (id_campus, nom_campus, id_ciudad);
commit;
end agrega_campus;
create or replace procedure agrega_carrera(id_carrera in number, nom_carrera in varchar2, id_campus in number)is
begin
insert into carreras (id_carrera, nombre, id_campus)
values (id_carrera, nom_carrera, id_campus);
commit;
end agrega_carrera;
create or replace procedure agrega_estudiante(rut_est in number, nom_estudiante in varchar2, nom_apellido in
varchar2, edad in number, fono in number, direccion in varchar2, id_carrera in number)is
begin
insert into estudiantes (rut_est, nombres, apellidos, edad, fono, direccion, id_carrera)
values (rut_est, nom_estudiante, nom_apellido, edad, fono, direccion, id_carrera);
commit;
end agrega_estudiante;
2.- Realice un procedimiento que actualice la edad de los estudiantes a partir de su RUT.
create or replace procedure actualiza_rut_edad(rut_est_act in number, edad_act in number) is
begin
update estudiantes
set edad = edad_act
where rut_est = rut_est_act;
commit;
Carlos Mancilla – Ing. Comercial
end actualiza_rut_edad;
3.- Realice una función que entregue la edad promedio de los estudiantes de “PED. EN EDUCACIÓN DIFERENCIAL”.
create or replace function est_diferencial(nombre_carrera in varchar2)
return number is
valor_est_diferencial number;
begin
select AVG(e.edad)
into valor_est_diferencial
from estudiantes e, carreras c
where e.id_carrera = c.id_carrera
and c.nombre = nombre_carrera;
return valor_est_diferencial;
end est_diferencial;
Carlos Mancilla – Ing. Comercial
4.- Realice una función que entregue la suma de edades de los estudiantes del campus ISLA TEJA. La función debe
llamarse SUMA_TEJA.
create or replace function suma_teja(nombre_campus in varchar2)
return number is
valor_sum_teja number;
begin
select sum(e.edad)
into valor_sum_teja
from estudiantes e, carreras c, campus cs
where e.id_carrera = c.id_carrera
and c.id_campus = cs.id_campus
and cs.nombre = nombre_campus;
return valor_sum_teja;
end suma_teja;
Carlos Mancilla – Ing. Comercial
5.- Realice una función que cuente los estudiantes del campus ISLA TEJA. La función debe llamarse CUENTA_TEJA.
create or replace function cuenta_teja(nombre_campus in varchar2)
return number is
valor_cuenta_teja number;
begin
select count(*)
into valor_cuenta_teja
from estudiantes e, carreras c, campus cs
where e.id_carrera = c.id_carrera
and c.id_campus = cs.id_campus
and cs.nombre = nombre_campus;
return valor_cuenta_teja;
end cuenta_teja;
Carlos Mancilla – Ing. Comercial
6.- Una vez realizado 4 y 5, ejecute la siguiente consulta y describa que arroja como resultado:
SELECT (SUMA_TEJA/CUENTA_TEJA) as NX
FROM DUAL;
Promedio de edad de los estudiantes del campus Isla Teja, dejándolo en una lista que nombra este valor como NX
7.- (RESUELTO) Entregue el número total de estudiantes de cada una de las carreras, mostrando el nombre de la
carrera y su número de estudiantes respectivos:
SELECT c.NOMBRE as CARRERA,count(e.RUT_EST) as N_ESTUDIANTES
FROM ESTUDIANTES e, CARRERAS c
where e.ID_CARRERA = c.ID_CARRERA
GROUP BY c.NOMBRE
Selección el nombre de las carreras como columna carreras y entregue el número de estudiantes por carrera desde la
tabla carreras y estudiantes esto agrupado por nombre de carreras.
8.- Entregue el número total de estudiantes de cada uno de los campus de forma similar al ejercicio 7.