trabajo práctico sql(2)
DESCRIPTION
Laboratorio práctico de ayudantia de SQLTRANSCRIPT
![Page 1: Trabajo Práctico SQL(2)](https://reader031.vdocuments.pub/reader031/viewer/2022020504/568c51d41a28ab4916b43fa3/html5/thumbnails/1.jpg)
Universidad Austral de Chile.Facultad de Ciencias Económicas y Administrativas
Escuela Ingeniería ComercialSistemas de Información Empresarial.
TRABAJO
PRACTICO (2)PL/SQL
Valdivia, 21 de mayo de 2012.
Profesor: Cristian Salazar C.
Ayudante: José L. Carrasco
Alumnas: Montserrat Oliva V.
![Page 2: Trabajo Práctico SQL(2)](https://reader031.vdocuments.pub/reader031/viewer/2022020504/568c51d41a28ab4916b43fa3/html5/thumbnails/2.jpg)
Lab 13_05: Consultas con Cálculos
Actividades
Supuestos: La base de datos no guarda el histórico de los préstamos realizados, es decir, que al entregar un libro, ese préstamo se elimina de la tabla PRESTAMO.
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.
Consulta SQL:
select e.rut_est, e.nombres, e.apellidos, trunc(sysdate)-p.fecha_e as dias_atraso From estudiantes e, prestamo pwhere p.fecha_e < sysdateand e.rut_est = p.rut_est;
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.
Consulta SQL:
select e.rut_est, e.nombres, e.apellidos, trunc(sysdate)-p.fecha_e as dias_atraso, (trunc(sysdate)-p.fecha_e)*1250 as deudaFrom estudiantes e, prestamo pwhere p.fecha_e < sysdateand e.rut_est = p.rut_est;
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.
Consulta SQL:
Total de ingreso a recibir de la biblioteca por todos los libros que tiene en préstamo.
![Page 3: Trabajo Práctico SQL(2)](https://reader031.vdocuments.pub/reader031/viewer/2022020504/568c51d41a28ab4916b43fa3/html5/thumbnails/3.jpg)
select sum((trunc(sysdate)-p.fecha_e)*1250) as total_ingresoFrom prestamo pwhere p.fecha_e < sysdate;
Se tiene el total de ingreso por dia.
select sum((trunc(sysdate)-p.fecha_e)*1250) as total_ingresoFrom prestamo pwhere p.fecha_e < sysdategroup by 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.
Consulta SQL:
Promedio total de las deudas.
select AVG ((trunc(sysdate)-p.fecha_e)*1250) as promedio_deuda_estFrom prestamo pwhere p.fecha_e < sysdate;
Promedio de deuda por estudiantes.
select p.rut_est, AVG ((trunc(sysdate)-p.fecha_e)*1250) as promedio_deuda_estFrom prestamo pwhere p.fecha_e < sysdategroup by p.rut_est;
5.- Entregue la mínima deuda acumulada al día de hoy. Ayuda: Utilice la función MIN y la función GROUP BY.
Consulta SQL:
La mínima deuda.
![Page 4: Trabajo Práctico SQL(2)](https://reader031.vdocuments.pub/reader031/viewer/2022020504/568c51d41a28ab4916b43fa3/html5/thumbnails/4.jpg)
select MIN ((trunc(sysdate)-p.fecha_e)*1250) as min_deuda_diaFrom prestamo pwhere p.fecha_e < sysdate;
Mínima deuda que se posee.
select p.fecha_e, MIN ((trunc(sysdate)-p.fecha_e)*1250) as min_deuda_diaFrom prestamo pwhere p.fecha_e < sysdategroup by fecha_e;
6.- Entregue la máxima deuda acumulada al día de hoy. Ayuda: utilice la función MAX y la función GROUP BY.
Consulta SQL:
Máximo de deuda.
select MAX ((trunc(sysdate)-p.fecha_e)*1250) as max_deuda_diaFrom prestamo pwhere p.fecha_e < sysdate;
Máximo de deuda por dia.
select p.fecha_e, MAX ((trunc(sysdate)-p.fecha_e)*1250) as max_deuda_diaFrom prestamo pwhere p.fecha_e < sysdategroup by 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.
![Page 5: Trabajo Práctico SQL(2)](https://reader031.vdocuments.pub/reader031/viewer/2022020504/568c51d41a28ab4916b43fa3/html5/thumbnails/5.jpg)
Consulta SQL:
select SUM((trunc(sysdate+4)-p.fecha_e)*1250) as deuda_acumuladaFrom prestamo pwhere p.fecha_e < sysdate;
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.
La vista máximos guardada en el sistema de base de datos nos muestra el rut y nombre del estudiante, además muestra el titulo del libro prestado y la deuda que tiene el estudiante hasta el momento, además es el estudiante que mas deuda tiene.
La vista minimos nos muestra también el nombre y el nombre del estudiante, además del titulo del libro prestado y la deuda que tiene el estudiante hasta el momento. Los 4 estudiantes que aparecen de la vista son los que tienen la menor dueda.
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.
Consulta SQL:
select c.nombre, count((trunc(sysdate)-p.fecha_e)) as num_atrasadofrom carreras c, prestamo p, estudiantes ewhere p.rut_est = e.rut_estand c.id_carrera = e.id_carreragroup by c.nombre;
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.
Consulta SQL:
select l.cod_libro, count(p.rut_est) as cant_estfrom libros l, prestamo pwhere l.cod_libro = p.cod_librogroup by l.cod_libro;
![Page 6: Trabajo Práctico SQL(2)](https://reader031.vdocuments.pub/reader031/viewer/2022020504/568c51d41a28ab4916b43fa3/html5/thumbnails/6.jpg)
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 prest_atrasado_carrerawhere rownum <= 10order by num_atrasado desc;