1. UNIVERSIDAD AUSTRAL DE CHILE
FACULTAD DE CIENCIAS ECONÓMICAS Y ADMINISTRATIVAS
INSTITUTO DE ADMINISTRACIÓN
Asignatura: Sistemas de Información Empresarial.
Profesor: Cristian Salazar.
Profesor Ayudante: José Luis Carrasco.
Nombre: Alejandro Vesperinas Figueroa.
21 de Mayo de 2012, Valdivia
2. 1.- Se solicita realizar una consulta que entregue a los estudiantes atrasados en la entrega de sus
préstamos de libros, e indicar la cantidad de días de atraso para cada préstamo. Los campos a mostrar son:
Rut del estudiante, Nombres, Apellidos y el N° de días de atraso. Ayuda: Usar la fecha del sistema
denominada por SYSDATE, y usar la función TRUNC para quitar las horas, minutos y segundos de las
fechas.
select p.rut_est, e.nombres, e.apellidos, l.titulo, (trunc(sysdate) - trunc(p.fecha_e)) as “Dias de Atraso”
from prestamo p, estudiantes e, libros l
where p.rut_est = e.rut_est
and p.cod_libro = l.cod_libro
and trunc(sysdate) > trunc(p.fecha_e)
3. 2.- Si cada día 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, sería A*B.
select p.rut_est, e.nombres, e.apellidos, l.titulo, (trunc(sysdate) - trunc(p.fecha_e)) as “Dias Atrasados”,
(trunc(sysdate) - trunc(p.fecha_e))*1250 as “Valor Deuda (1250 x dia)”
from prestamo p, estudiantes e, libros l
where p.rut_est = e.rut_est
and p.cod_libro = l.cod_libro
and trunc(sysdate) > trunc(p.fecha_e)
4. 3.- Entregue la suma de dinero que ganará la Biblioteca acumulada al día de hoy. Ayuda: Para hacer la
suma se usa la función SUM y la función GROUP BY.
select SUM (trunc(sysdate) - trunc(p.fecha_e))*1250 AS “Ingresos por moras”
from prestamo p, estudiantes e, libros l
where p.rut_est = e.rut_est
and p.cod_libro = l.cod_libro
and trunc(sysdate) > trunc(p.fecha_e)
4.- Entregue el promedio de deuda que tienen los estudiantes al día de hoy. Ayuda: Para calcular el
promedio se usa la función AVG y la función GROUP BY.
select ROUND(AVG ((trunc(sysdate) - trunc(p.fecha_e))*1250)) AS “Promedio Deuda al dia de hoy”
from prestamo p, estudiantes e, libros l
where p.rut_est = e.rut_est
and p.cod_libro = l.cod_libro
and trunc(sysdate) > trunc(p.fecha_e)
5.- Entregue la mínima deuda acumulada al día de hoy. Ayuda: Utilice la función MIN y la función GROUP
BY.
select MIN ((trunc(sysdate) - trunc(p.fecha_e))*1250) AS “Minima deuda diaria”
from prestamo p, estudiantes e, libros l
where p.rut_est = e.rut_est
and p.cod_libro = l.cod_libro
and trunc (sysdate) > trunc(p.fecha_e)
5. 6.- Entregue la máxima deuda acumulada al día de hoy. Ayuda: utilice la función MAX y la función GROUP
BY.
select MAX ((trunc(sysdate) - trunc(p.fecha_e))*1250) AS “Maxima deuda diaria”
from prestamo p, estudiantes e, libros l
where p.rut_est = e.rut_est
and p.cod_libro = l.cod_libro
and trunc(sysdate) > trunc(p.fecha_e)
7.- Suponiendo que ninguno de los estudiantes que se encuentran con préstamo entrega sus libros, cual
será la deuda acumulada para 4 días más. Ayuda: Para sumar un días a una fecha se hace de la siguiente
forma: FECHA + N, donde N es la cantidad de días a sumar y FECHA es la fecha a la cual le estamos
sumandos días. Para el caso de la fecha de hoy, sería SYSDATE + N.
select SUM((trunc(sysdate+4) - trunc(p.fecha_e))*1250) AS “Deuda cuatro días”
from prestamo p, estudiantes e, libros l
where p.rut_est = e.rut_est
and p.cod_libro = l.cod_libro
and 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 análisis de cada parte de la
consulta. Ayuda: Busque información sobre Sub-Consultas.
6. 9.- Entregue el nombre de la carrera y la cantidad de estudiantes por cada una de ellas que tiene libros
atrasados. Ayuda: Use la función COUNT y la función GROUP BY.
select COUNT(e.rut_est) as “Numero de estudiantes”, c.nombre
from prestamo p, estudiantes e, carreras c
where p.rut_est = e.rut_est
AND e.id_carrera = c.id_carrera
and trunc(sysdate) > trunc(p.fecha_e)
group by c.nombre
7. 10.- Los mismo que en (9) pero esta vez que entregue la cantidad de estudiantes que tiene un libro en
préstamo ya sea atrasado o al día.
select COUNT(e.rut_est), c.nombre
from prestamo p, estudiantes e, carreras c
where p.rut_est = e.rut_est
AND e.id_carrera = c.id_carrera
group by c.nombre
8. 11.- Investigue como entregar las 10 carreras que tienen mayor cantidad de libros en préstamo. Ayuda: Se
usa un tipo de función llamada ROWNUM y la función ORDER BY.
select * from (
select COUNT(e.rut_est) as “Top Ten”, c.nombre
from prestamo p, estudiantes e, carreras c
where p.rut_est = e.rut_est
AND e.id_carrera = c.id_carrera
group by c.nombre
order by COUNT(e.rut_est) desc)
where rownum <=10