pl sql developer
DESCRIPTION
Laboratorio N°2 con aplicación de consultas sobre base de datos.TRANSCRIPT
-
Sistemas de Informacin Empresarial
PL SQL Developer
Daniela Oyarzn F.
Ruth Zumelzu D.
VALDIVIA CHILE MAYO 2012
-
Supuestos: La base de datos no guarda el histrico de los prstamos realizados, es decir,
que al entregar un libro, ese prstamo se elimina de la tabla PRESTAMO.
1.- Se solicita realizar una consulta que entregue a los estudiantes atrasados en la entrega de sus
prstamos de libros, e indicar la cantidad de das de atraso para cada prstamo. Los campos a
mostrar son: Rut del estudiante, Nombres, Apellidos y el N de das de atraso. Ayuda: Usar la
fecha del sistema denominada por SYSDATE, y usar la funcin TRUNC para quitar las horas,
minutos y segundos de las fechas.
Select e.rut_est, e.nombres, e.apellidos, p.fecha_e, trunc (sysdate p.fecha_e) as atraso
From estudiantes e, prestamo p
Where p.fecha_e < sysdate
And e.rut_est = p.rut_est
-
2.- Si cada da efectivo de atraso tiene un valor de $1250, entregue los mismo que en (1), pero
agregando una nueva columna con la deuda adquirida por cada estudiante. Ayuda: Para
multiplicar se usa el *, entonces si se desea multiplicar A por B, sera A*B.
Select e.rut_est, e.nombres, e.apellidos, p.fecha_e, trunc (sysdate p.fecha_e) as atraso,
trunc /sysdate p.fecha_e) * 1250 as deuda
from estudiantes e, prestamo p
where p.fecha_e < sysdate
and e.rut_est =p.rut_est
3.- Entregue la suma de dinero que ganar la Biblioteca acumulada al da de hoy. Ayuda: Para
hacer la suma se usa la funcin SUM y la funcin GROUP BY.
select sum ( (trunc (sysdate) trunc (p.fecha_e))*1250) as deuda_total
from prestamo p
where trunc (sysdate) > trunc (p.fecha_e)
-
4.- Entregue el promedio de deuda que tienen los estudiantes al da de hoy. Ayuda: Para calcular
el promedio se usa la funcin AVG y la funcin GROUP BY.
Select avg ((trunc (sysdate) trunc (p.fecha_e))*1250) as promedio_deuda
From prestamo p
Where trunc (sysdate) > trunc (p.fecha_e)
5.- Entregue la mnima deuda acumulada al da de hoy. Ayuda: Utilice la funcin MIN y la
funcin GROUP BY.
Select min ((trunc (sysdate) trunc (p.fecha_e)) *1250) as minima_deuda
From prstamo p
Where trunc (sysdate) > trunc (p.fecha_e)
6.- Entregue la mxima deuda acumulada al da de hoy. Ayuda: utilice la funcin MAX y la
funcin GROUP BY.
Select max ((trunc (sysdate) trunc (p.fecha_e)) *1250) as minima_deuda
From prestamo p
Where trunc (sysdate) > trunc (p.fecha_e)
-
7.- Suponiendo que ninguno de los estudiantes que se encuentran con prstamo entrega sus
libros, cual ser la deuda acumulada para 4 das ms. Ayuda: Para sumar un das a una fecha se
hace de la siguiente forma: FECHA + N, donde N es la cantidad de das a sumar y FECHA es la
fecha a la cual le estamos sumandos das. Para el caso de la fecha de hoy, sera SYSDATE + N.
select sum (( trunc (sysdate + 4) trunc (p.fecha_e)) *1250 as deuda_total_cuatro_dias
from prestamo p
where trunc (sysdate + 4) > trunc (p.fecha_e)
8.- En su sistema de Base de Datos se encuentran 2 Vistas (Views), una llamada MAXIMO y otra
llamada MINIMO. Describa claramente que entregan cada una de ellas, haciendo anlisis de
cada parte de la consulta. Ayuda: Busque informacin sobre Sub-Consultas.
Create or replace view minimos as
Select p.rut_est RUT,
e.apellidos || || e.nombres NOMBRE,
l.titulo,
(trunc (sysdate) trunc (p.fecha_e)) *1250 as DIAS_ATRASO
From prestamo p, estudiantes e, libros l
Where trunc (p.fecha_e) < trunc (sysdate)
And p.rut_est = e.rut_est
And p.cod_libro = l.cod_libro
And (trunc (sysdate) trunc (p.fecha_e) =
(select min (trunc (sysdate) trunc (p2.fecha_e))
From prestamo p2
Where trunc (p2.fecha_e) < trunc (sysdate));
-
Estudiantes con mnima deuda, se debe utilizar una sub-consulta que entregue los das mnimos
en la base de datos de los textos atrasados, esta consulta en el ltimo and corresponde a otra
consulta anterior.
Create or replace view maximos as
Select p.rut_est RUT,
e.apellidos || || e.nombres NOMBRE,
l.titulo,
(trunc (sysdate) trunc (p.fecha_e)) *1250 as DIAS_ATRASO
From prestamo p, estudiantes e, libros l
Where trunc (p.fecha_e) < trunc (sysdate)
And p.rut_est = e.rut_est
And p.cod_libro = l.cod_libro
And (trunc (sysdate) trunc (p.fecha_e) =
(select max (trunc (sysdate) trunc (p2.fecha_e))
From prestamo p2
Where trunc (p2.fecha_e) < trunc (sysdate));
Tabla de estudiantes que poseen las mximas deudas por sus das de atraso, se debe utilizar una
sub-consulta para ver el mximo de nmeros de das de atraso, la consulta que est en el ultimo
and corresponde a una consulta hecha anteriormente a la base de datos
-
9.- Entregue el nombre de la carrera y la cantidad de estudiantes por cada una de ellas que tiene
libros atrasados. Ayuda: Use la funcin COUNT y la funcin GROUP BY.
select c.nombre as carrera, count (p.rut_est) as n_alumnos_pres_atrasados
from carreras c, prestamo p, estudiantes e
where p.rut_est =e.rut_est
and e.id_carrera = c.id_carrera
and trunc (p.fecha_e) < trunc (sysdate)
group by c.nombre
-
10.- Los mismo que en (9) pero esta vez que entregue la cantidad de estudiantes que tiene un
libro en prstamo ya sea atrasado o al da.
Select c.nombre as carrera, count (p.rut_est) as n_est_un_prest
From carreras c, prestamo p, estudiantes e
Where p.rut_est = e.rut_est
And e.id_carrera = c.id_carrera
Group by c.nombre
11.- Investigue como entregar las 10 carreras que tienen mayor cantidad de libros en prstamo.
Select CARRERA, NUMERO_PRESTAMOS_VIGENTES
From ( Select c.nombre as carrera, count (p.rut_est) as numero_prestamos_vigentes
From carreras c, prestamo p, estudiantes e
Where p.rut_est = e.rut_est
And e.id_carrera = c.id_carrera
Group by c.nombre
Order by numero_prestamos_vigentes desc)
Where rownum