pl sql developer

Click here to load reader

Upload: daniela-oyarzun

Post on 21-Mar-2016

224 views

Category:

Documents


4 download

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