7
LABORATORIOPLSQL Integrantes:Elizabeth Morales Febe Moena Andrea Uribe Profesor:Cristian Salazar Ayudante:José Luis Carrasco Curso: ADMI 273 Valdivia 21 de Mayo, 2012

Laboratorio14.05.2012

Embed Size (px)

Citation preview

Page 1: Laboratorio14.05.2012

LABORATORIOPLSQL

Integrantes:Elizabeth Morales

Febe Moena

Andrea Uribe

Profesor:Cristian Salazar

Ayudante:José Luis Carrasco

Curso: ADMI 273

Valdivia 21 de Mayo, 2012

Page 2: Laboratorio14.05.2012

1

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.

selecte.rut_est, e.nombres, e.apellidos,(trunc(sysdate)-(p.fecha_e))

asN_días_atrasados

from estudiantes e, prestamo p

wheree.rut_est=p.rut_est

andp.fecha_e<trunc(sysdate);

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.

selecte.rut_est, e.nombres, e.apellidos, (trunc(sysdate)-(p.fecha_e))

asN_dias_atrasados, (trunc(sysdate)-(p.fecha_e))*1250 as Deuda

from estudiantes e, prestamo p

wheree.rut_est=p.rut_estand

p.fecha_e<trunc(sysdate);

Page 3: Laboratorio14.05.2012

2

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.

selectsum((1250*(trunc(sysdate)-(p.fecha_e)))) asDeuda_Acumulada

fromprestamo p, estudiantes e

wheree.rut_est=p.rut_est

and (trunc(sysdate)-(p.fecha_e))> 0

groupbytrunc(sysdate);

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.

selectavg((1250*(trunc(sysdate)-(p.fecha_e)))) asPromedio_Deuda

fromprestamo p, estudiantes e

wheree.rut_est=p.rut_est

and (trunc(sysdate)-(p.fecha_e))> 0

groupbytrunc(sysdate);

5.- Entregue la mínima deuda acumulada al día de hoy. Ayuda: Utilice la función MIN y la

función GROUP BY.

selectsum(dias_atraso)asMinima_deuda_acumulada

fromminimos

groupbytrunc(sysdate);

Page 4: Laboratorio14.05.2012

3

6.- Entregue la máxima deuda acumulada al día de hoy. Ayuda: utilice la función MAX y

la función GROUP BY.

selectsum(dias_atraso) asMaxima_deuda_acumulada

frommaximos

groupbytrunc(sysdate);

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.

selectsum((1250*(trunc(sysdate+4)-(p.fecha_e)))) asDeuda_Acumulada

fromprestamo p, estudiantes e

wheree.rut_est=p.rut_est

and (trunc(sysdate+4)-(p.fecha_e))> 0

groupbytrunc(sysdate);

Page 5: Laboratorio14.05.2012

4

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.select *

frommaximos;

Esta función muestra los estudiantes que tienen la mayor deuda acumulada, es decir los que

llevan más días de atraso en entregar los libros. Lo que va haciendo es algoritmo es buscar

todos los estudiantes que tienen deuda y buscar el o los que tengan la máxima deuda, es

este caso es sólo uno y hasta el día de hoy (17/05/2012) debe $20.000.

select *

fromminimos;

Esta función muestra los estudiantes que tienen la menor deuda acumulada en pesos y el

libro que tienen atrasado. Al contrario de la función máximo, lo que va haciendo este

algoritmo es buscar los estudiantes que tienen deuda, buscando los que tengan la deuda mas

baja, en este caso son varios los que tienen la mínima deuda.

Page 6: Laboratorio14.05.2012

5

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 nombre, count(e.rut_est)asNumero_estudiantes

from estudiantes e, carreras c, prestamo p

wherec.id_carrera=e.id_carreraand

e.rut_est=p.rut_estand

p.fecha_e<trunc(sysdate)

groupby (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.

select nombre, count(e.rut_est)asAlumnos_con_libros_prestados

from estudiantes e, carreras c, prestamo p

wherec.id_carrera=e.id_carreraand

e.rut_est=p.rut_est

groupby (nombre);

Page 7: Laboratorio14.05.2012

6

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.

createorreplaceview L10V as

select nombre, count(e.rut_est)asAlumnos_con_libros_prestados

from estudiantes e, carreras c, prestamo p

wherec.id_carrera=e.id_carreraand

e.rut_est=p.rut_est

groupby (nombre);

select nombre, alumnos_con_libros_prestados

from L10v

whererownum<11

orderbyalumnos_con_libros_prestadosdesc;