SlideShare una empresa de Scribd logo

Tarea ayudantia nº2

1 de 7
Descargar para leer sin conexión
Universidad Austral de Chile
   Facultad de Ciencias Económicas y Administrativas
             Escuela de Ingeniería Comercial
          Sistemas de información empresarial




TRABAJO N°2 AYUDANTÍA
   BÚSQUEDAS PLSQL




                                          Profesor:    Cristian Salazar
                                          Ayudante:    José Luis Carrasco
                                          Alumno:      Alejandro Ramírez




               VALDIVIA, MAYO 2012
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: Usarla
fecha del sistema denominada por SYSDATE, y usar la función TRUNC para quitar las horas,
minutos y segundos de las fechas.


         Select e.nombres NOMBRE_EST, e.apellidos APELLIDOS_EST,
         trunc(sysdate)-p.fecha_e DIAS_DE_ATRASO
         from estudiantes e, prestamo p
         where e.rut_est=p.rut_est
         and p.fecha_e<sysdate;




2.-Si cada día efectivo de atraso tiene un valor de $1250, entregue lo mismo que en (1), pero
agregando una nueva columna con la deuda adquirida por cada estudiante.



          Select e.nombres NOMBRE_EST, e.apellidos APELLIDOS_EST,
          trunc(sysdate)-p.fecha_e DIAS_DE_ATRASO, (trunc(sysdate)-
          p.fecha_e)*1250 DEUDA
          from estudiantes e, prestamo p
          where e.rut_est=p.rut_est
          and p.fecha_e<sysdate;
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)-p.fecha_e)*1250) DEUDA_TOTAL
           from estudiantes e, prestamo p
           where e.rut_est=p.rut_est
           and p.fecha_e<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.


           Select avg((trunc(sysdate)-p.fecha_e)*1250) DEUDA_PROMEDIO
           from estudiantes e, prestamo p
           where e.rut_est=p.rut_est
           and p.fecha_e<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.



           Select MIN((trunc(sysdate)-p.fecha_e)*1250) DEUDA_MINIMA
           from estudiantes e, prestamo p
           where e.rut_est=p.rut_est
           and p.fecha_e<sysdate;
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)-p.fecha_e)*1250) DEUDA_MAXIMA
          from estudiantes e, prestamo p
          where e.rut_est=p.rut_est
          and p.fecha_e<sysdate;




 7.- Suponiendo que ninguno de los estudiantes que se encuentran con préstamo entrega sus
 libros, cuál será la deuda acumulada para 4dí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 sumando días. Para el caso de la fecha de hoy, sería SYSDATE+
 N.


          Select SUM((trunc(sysdate)-p.fecha_e)+4)*1250 DEUDA_TOTAL_A_4_DIAS
          from estudiantes e, prestamo p
          where e.rut_est=p.rut_est
          and p.fecha_e<sysdate;




 8.- En su sistema de Base de Datos se encuentran 2 Vistas (Views),una llamada MAXIMO
 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.

 Las consultas nos entregan los resultados de la mayor y la menor deuda de los estudiantes,
provenientes de la cantidad de días que deben el libro que aparece claramente especificado.

 En la vista máximos, es posible ver el nombre del estudiante, en conjunto con su rut y el nombre
del libro, que posee la mayor deuda.

 En la vista mínimos es posible ver los nombres de los estudiantes, en conjunto con sus rut y
nombres de los libros, que poseen las menores deudas.
Análisis de las partes de las consultas

    a) En la primera parte (todo lo que considera el SELECT), se requiere que se muestre el rut de
       los estudiantes como RUT, los apellidos en conjunto con el nombre de los estudiantes
       como NOMBRE, el título del libro y la multa total como DIAS_ATRASO, que involucra la
       cantidad de días de atrasos multiplicado por 1250.


              select p.rut_est RUT,
              e.apellidos || ' ' || e.nombres NOMBRE, l.titulo,
              (trunc(sysdate) - trunc(p.fecha_e)) * 1250 as DIAS_ATRASO




    b) En la segunda parte (todo lo que considera en FROM), se identifica la tabla préstamo con
       la letra “p”, la tabla estudiantes con la letra “e”, y la tabla libros con la letra “l”.

                from prestamo p, estudiantes e, libros l




    c) En esta tercera parte (WHERE), se pide como condición que la fecha de entrega sea menor
       que la fecha del sistema.


              where trunc(p.fecha_e) < trunc(sysdate)




    d) En la cuarta parte (AND’s) se solicita que se igualen las primary keys de las tablas
       utilizadas.


            and p.rut_est = e.rut_est
            and p.cod_libro = l.cod_libro
e) En la quinta y última parte, se realiza una subconsulta (una subconsulta consiste aplicar
     una instrucción SELECT dentro de otra función SELECT), que solicita que la función de días
     de atraso del préstamo en cuestión dé como resultado el mayor número de días. (en el
     caso del mínimo, se solicita lo contrario).




             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));




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 c.nombre CARRERA, count(e.rut_est) NUMERO_ATRASOS
          FROM estudiantes e, prestamo p, carreras c
          WHERE e.rut_est = p.rut_est
          and c.id_carrera = e.id_carrera
          and fecha_e<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 préstamo ya sea atrasado o al día.



          SELECT c.nombre CARRERA, count(e.rut_est) NUMERO_ATRASOS
          FROM estudiantes e, prestamo p, carreras c
          WHERE e.rut_est = p.rut_est
          and c.id_carrera = e.id_carrera
          GROUP by c.nombre;

Recomendados

PLSQL Ayudantia
PLSQL Ayudantia PLSQL Ayudantia
PLSQL Ayudantia raillanca
 
Laboratorio n2 de ayudantía sie
Laboratorio n2 de ayudantía  sieLaboratorio n2 de ayudantía  sie
Laboratorio n2 de ayudantía siekatendency
 
Trabajo 2. ayudantía. elmar alarcón namuncura
Trabajo 2. ayudantía. elmar alarcón namuncuraTrabajo 2. ayudantía. elmar alarcón namuncura
Trabajo 2. ayudantía. elmar alarcón namuncuraElmar Namuncura
 
Laboratorio Nº 3 SIA
Laboratorio Nº 3 SIALaboratorio Nº 3 SIA
Laboratorio Nº 3 SIAFranco Rios
 
Laboratorio Nº 4 SIA
Laboratorio Nº 4 SIALaboratorio Nº 4 SIA
Laboratorio Nº 4 SIAFranco Rios
 

Más contenido relacionado

Destacado (20)

Smartphone Security Article
Smartphone Security ArticleSmartphone Security Article
Smartphone Security Article
 
BLOQUE O "PACIE"
BLOQUE O "PACIE"BLOQUE O "PACIE"
BLOQUE O "PACIE"
 
Analisi
AnalisiAnalisi
Analisi
 
Capitulo1 luis
Capitulo1 luisCapitulo1 luis
Capitulo1 luis
 
Métodos de búsqueda en internet
Métodos de búsqueda en internetMétodos de búsqueda en internet
Métodos de búsqueda en internet
 
Pío baroja
Pío barojaPío baroja
Pío baroja
 
Capitulo 4
Capitulo 4Capitulo 4
Capitulo 4
 
Tarea nº2
Tarea nº2Tarea nº2
Tarea nº2
 
Lab5 sql
Lab5 sqlLab5 sql
Lab5 sql
 
Reconocimiento biodiversidad rocio nova
Reconocimiento biodiversidad rocio novaReconocimiento biodiversidad rocio nova
Reconocimiento biodiversidad rocio nova
 
Documento
DocumentoDocumento
Documento
 
A tu lado aprendí
A tu lado aprendíA tu lado aprendí
A tu lado aprendí
 
Presentación personal
Presentación personalPresentación personal
Presentación personal
 
Granja Naturaleza Viva
Granja Naturaleza VivaGranja Naturaleza Viva
Granja Naturaleza Viva
 
Catalogo one prot. ocular, prot. cabeza-facia, y anticaidas 2012
Catalogo one prot. ocular, prot. cabeza-facia, y anticaidas 2012Catalogo one prot. ocular, prot. cabeza-facia, y anticaidas 2012
Catalogo one prot. ocular, prot. cabeza-facia, y anticaidas 2012
 
Naturaleza y
Naturaleza yNaturaleza y
Naturaleza y
 
Plan de negocios
Plan de negociosPlan de negocios
Plan de negocios
 
Diapositivas tatii
Diapositivas tatiiDiapositivas tatii
Diapositivas tatii
 
Cuestionario mac ganem
Cuestionario mac ganemCuestionario mac ganem
Cuestionario mac ganem
 
Tati
TatiTati
Tati
 

Similar a Tarea ayudantia nº2 (20)

Tarea 2
Tarea 2Tarea 2
Tarea 2
 
Tarea 2
Tarea 2Tarea 2
Tarea 2
 
Segundo informe ayudantía
Segundo informe ayudantíaSegundo informe ayudantía
Segundo informe ayudantía
 
Tarea sia
Tarea siaTarea sia
Tarea sia
 
Tarea+siaaa
Tarea+siaaaTarea+siaaa
Tarea+siaaa
 
Tarea sia (2)
Tarea sia (2)Tarea sia (2)
Tarea sia (2)
 
Laboratorio SIA - 2
Laboratorio SIA - 2Laboratorio SIA - 2
Laboratorio SIA - 2
 
Laboratorio sia 2 (1)
Laboratorio sia 2 (1)Laboratorio sia 2 (1)
Laboratorio sia 2 (1)
 
Laboratorio
LaboratorioLaboratorio
Laboratorio
 
Tarea final sie 2012
Tarea final sie 2012Tarea final sie 2012
Tarea final sie 2012
 
Tarea ahora
Tarea ahoraTarea ahora
Tarea ahora
 
PLSQL
PLSQLPLSQL
PLSQL
 
Trabajo ayudantía
Trabajo ayudantíaTrabajo ayudantía
Trabajo ayudantía
 
Lab 2
Lab 2Lab 2
Lab 2
 
Lab 2
Lab 2Lab 2
Lab 2
 
Tarea 3
Tarea 3Tarea 3
Tarea 3
 
Laboratorio 25 de junio
Laboratorio 25 de junioLaboratorio 25 de junio
Laboratorio 25 de junio
 
Laboratorio N° 2
Laboratorio N° 2Laboratorio N° 2
Laboratorio N° 2
 
Laboratorio 2
Laboratorio 2Laboratorio 2
Laboratorio 2
 
Laboratorio 2 - ayudantia
Laboratorio 2 - ayudantiaLaboratorio 2 - ayudantia
Laboratorio 2 - ayudantia
 

Tarea ayudantia nº2

  • 1. Universidad Austral de Chile Facultad de Ciencias Económicas y Administrativas Escuela de Ingeniería Comercial Sistemas de información empresarial TRABAJO N°2 AYUDANTÍA BÚSQUEDAS PLSQL Profesor: Cristian Salazar Ayudante: José Luis Carrasco Alumno: Alejandro Ramírez VALDIVIA, MAYO 2012
  • 2. 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: Usarla fecha del sistema denominada por SYSDATE, y usar la función TRUNC para quitar las horas, minutos y segundos de las fechas. Select e.nombres NOMBRE_EST, e.apellidos APELLIDOS_EST, trunc(sysdate)-p.fecha_e DIAS_DE_ATRASO from estudiantes e, prestamo p where e.rut_est=p.rut_est and p.fecha_e<sysdate; 2.-Si cada día efectivo de atraso tiene un valor de $1250, entregue lo mismo que en (1), pero agregando una nueva columna con la deuda adquirida por cada estudiante. Select e.nombres NOMBRE_EST, e.apellidos APELLIDOS_EST, trunc(sysdate)-p.fecha_e DIAS_DE_ATRASO, (trunc(sysdate)- p.fecha_e)*1250 DEUDA from estudiantes e, prestamo p where e.rut_est=p.rut_est and p.fecha_e<sysdate;
  • 3. 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)-p.fecha_e)*1250) DEUDA_TOTAL from estudiantes e, prestamo p where e.rut_est=p.rut_est and p.fecha_e<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. Select avg((trunc(sysdate)-p.fecha_e)*1250) DEUDA_PROMEDIO from estudiantes e, prestamo p where e.rut_est=p.rut_est and p.fecha_e<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. Select MIN((trunc(sysdate)-p.fecha_e)*1250) DEUDA_MINIMA from estudiantes e, prestamo p where e.rut_est=p.rut_est and p.fecha_e<sysdate;
  • 4. 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)-p.fecha_e)*1250) DEUDA_MAXIMA from estudiantes e, prestamo p where e.rut_est=p.rut_est and p.fecha_e<sysdate; 7.- Suponiendo que ninguno de los estudiantes que se encuentran con préstamo entrega sus libros, cuál será la deuda acumulada para 4dí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 sumando días. Para el caso de la fecha de hoy, sería SYSDATE+ N. Select SUM((trunc(sysdate)-p.fecha_e)+4)*1250 DEUDA_TOTAL_A_4_DIAS from estudiantes e, prestamo p where e.rut_est=p.rut_est and p.fecha_e<sysdate; 8.- En su sistema de Base de Datos se encuentran 2 Vistas (Views),una llamada MAXIMO 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. Las consultas nos entregan los resultados de la mayor y la menor deuda de los estudiantes, provenientes de la cantidad de días que deben el libro que aparece claramente especificado. En la vista máximos, es posible ver el nombre del estudiante, en conjunto con su rut y el nombre del libro, que posee la mayor deuda. En la vista mínimos es posible ver los nombres de los estudiantes, en conjunto con sus rut y nombres de los libros, que poseen las menores deudas.
  • 5. Análisis de las partes de las consultas a) En la primera parte (todo lo que considera el SELECT), se requiere que se muestre el rut de los estudiantes como RUT, los apellidos en conjunto con el nombre de los estudiantes como NOMBRE, el título del libro y la multa total como DIAS_ATRASO, que involucra la cantidad de días de atrasos multiplicado por 1250. select p.rut_est RUT, e.apellidos || ' ' || e.nombres NOMBRE, l.titulo, (trunc(sysdate) - trunc(p.fecha_e)) * 1250 as DIAS_ATRASO b) En la segunda parte (todo lo que considera en FROM), se identifica la tabla préstamo con la letra “p”, la tabla estudiantes con la letra “e”, y la tabla libros con la letra “l”. from prestamo p, estudiantes e, libros l c) En esta tercera parte (WHERE), se pide como condición que la fecha de entrega sea menor que la fecha del sistema. where trunc(p.fecha_e) < trunc(sysdate) d) En la cuarta parte (AND’s) se solicita que se igualen las primary keys de las tablas utilizadas. and p.rut_est = e.rut_est and p.cod_libro = l.cod_libro
  • 6. e) En la quinta y última parte, se realiza una subconsulta (una subconsulta consiste aplicar una instrucción SELECT dentro de otra función SELECT), que solicita que la función de días de atraso del préstamo en cuestión dé como resultado el mayor número de días. (en el caso del mínimo, se solicita lo contrario). 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)); 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 c.nombre CARRERA, count(e.rut_est) NUMERO_ATRASOS FROM estudiantes e, prestamo p, carreras c WHERE e.rut_est = p.rut_est and c.id_carrera = e.id_carrera and fecha_e<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 préstamo ya sea atrasado o al día. SELECT c.nombre CARRERA, count(e.rut_est) NUMERO_ATRASOS FROM estudiantes e, prestamo p, carreras c WHERE e.rut_est = p.rut_est and c.id_carrera = e.id_carrera GROUP by c.nombre;
  • 7. 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 ROW NUM y la función ORDER BY. SELECT c.nombre CARRERA, count(e.rut_est) NUMERO_ATRASOS FROM estudiantes e, prestamo p, carreras c WHERE e.rut_est = p.rut_est and c.id_carrera = e.id_carrera GROUP by c.nombre;