SlideShare una empresa de Scribd logo
1 de 5
UNIVERSIDAD AUSTRAL DE CHILE
       FACULTAD DE CIENCIAS ECONÓMICAS Y ADMINISTRATIVAS
                  INSTITUTO DE ADMINISTRACIÓN
                             ADMI 273




      Laboratorio N°2
  Consultas PL/SQL-Oracle

                        Nombre: Elmar Alarcón Namuncura
                  Asignatura: Sistemas de Información Empresarial
           Profesor Asignatura: Cristian Salazar C. – José Luis Carrasco V.




                            Valdivia, 21 de Mayo de 2012
A continuación se presenta el desarrollo del laboratorio N°2 de la ayudantía del día 14
de mayo.
                                     Actividades
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 e.rut_est, e.nombres, e.apellidos, trunc(sysdate)-p.fecha_e as dias_atraso
  From estudiantes e, prestamo p
  where p.fecha_e < sysdate
  and 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.

  select e.rut_est, e.nombres, e.apellidos, trunc(sysdate)-p.fecha_e as dias_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 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 Deuda_Total_Atrasos
  from prestamo p
  where trunc(sysdate) > trunc(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 trunc(avg((trunc(sysdate) - trunc(p.fecha_e))*1250)) as
Deuda_Promedio_Atrasos, count(trunc(sysdate) - trunc(p.fecha_e)) as
alumnos_atrasados
from prestamo p
where trunc(sysdate) > trunc(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 p.fecha_e, MIN ((trunc(sysdate)-p.fecha_e)*1250) as min_deuda_dia
  From prestamo p
  where p.fecha_e < sysdate group 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.


  select p.fecha_e, MAX ((trunc(sysdate)-p.fecha_e)*1250) as max_deuda_dia
  From prestamo p
  where p.fecha_e < sysdate group by fecha_e;




7. Suponiendo que ninguno de los estudiantes que se encuentran con préstamo entrega
   sus libros, cuál 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)-p.fecha_e)*1250) as deuda_acumulada
  From prestamo p
  where 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 título del libro prestado y la deuda que
   tiene el estudiante hasta el momento, además del estudiante que más deuda tiene.
   La vista mínimos nos muestra también el nombre y el nombre del estudiante,
   además del título 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
   deuda.
   En cuanto al tema de las subconsultas, se encontró lo siguiente: “una subconsulta es
   una instrucción SELECT anidada dentro de otra instrucción SELECT: SELECT
   INTO, INSERT, INTO, DELETE, o UPDATE o dentro de otra subconsulta. Los
   formatos para las instrucciones de subconsultas son las siguientes:



   - WHERE expression [NOT] IN (subconsulta)
   - WHERE expression operador_comparacion [ANY | ALL] (subconsulta)
   - WHERE [NOT] EXISTS (subconsulta )


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, count((trunc(sysdate)-p.fecha_e)) as
            num_atrasado
            from carreras c, prestamo p, estudiantes e
            where p.rut_est = e.rut_est
            and c.id_carrera = e.id_carrera
            group by c.nombre;




10. Lo 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 l.cod_libro, count(p.rut_est) as cant_est
               from libros l, prestamo p
               where l.cod_libro = p.cod_libro group by
               l.cod_libro;
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 Libros_Prestados, c.nombre as Carrera
      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

Más contenido relacionado

Similar a Trabajo 2. ayudantía. elmar alarcón namuncura (20)

Tarea ayudantia nº2
Tarea ayudantia nº2Tarea ayudantia nº2
Tarea ayudantia nº2
 
PLSQL Ayudantia
PLSQL Ayudantia PLSQL Ayudantia
PLSQL Ayudantia
 
Laboratorio n2 de ayudantía sie
Laboratorio n2 de ayudantía  sieLaboratorio n2 de ayudantía  sie
Laboratorio n2 de ayudantía sie
 
Tarea 2
Tarea 2Tarea 2
Tarea 2
 
Ayudantia 14 05
Ayudantia 14 05Ayudantia 14 05
Ayudantia 14 05
 
Laboratorio n° 2
Laboratorio n° 2Laboratorio n° 2
Laboratorio n° 2
 
Lab 04 06
Lab 04 06Lab 04 06
Lab 04 06
 
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)
 
Tarea 3
Tarea 3Tarea 3
Tarea 3
 
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
 
Laboratorio 25 de junio
Laboratorio 25 de junioLaboratorio 25 de junio
Laboratorio 25 de junio
 
PLSQL
PLSQLPLSQL
PLSQL
 
Tarea ahora
Tarea ahoraTarea ahora
Tarea ahora
 
Prueba 1 oracle_273
Prueba 1 oracle_273Prueba 1 oracle_273
Prueba 1 oracle_273
 
Trabajo sistemas
Trabajo sistemasTrabajo sistemas
Trabajo sistemas
 

Trabajo 2. ayudantía. elmar alarcón namuncura

  • 1. UNIVERSIDAD AUSTRAL DE CHILE FACULTAD DE CIENCIAS ECONÓMICAS Y ADMINISTRATIVAS INSTITUTO DE ADMINISTRACIÓN ADMI 273 Laboratorio N°2 Consultas PL/SQL-Oracle Nombre: Elmar Alarcón Namuncura Asignatura: Sistemas de Información Empresarial Profesor Asignatura: Cristian Salazar C. – José Luis Carrasco V. Valdivia, 21 de Mayo de 2012 A continuación se presenta el desarrollo del laboratorio N°2 de la ayudantía del día 14 de mayo. Actividades
  • 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 e.rut_est, e.nombres, e.apellidos, trunc(sysdate)-p.fecha_e as dias_atraso From estudiantes e, prestamo p where p.fecha_e < sysdate and 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. select e.rut_est, e.nombres, e.apellidos, trunc(sysdate)-p.fecha_e as dias_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 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 Deuda_Total_Atrasos from prestamo p where trunc(sysdate) > trunc(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 trunc(avg((trunc(sysdate) - trunc(p.fecha_e))*1250)) as Deuda_Promedio_Atrasos, count(trunc(sysdate) - trunc(p.fecha_e)) as alumnos_atrasados from prestamo p where trunc(sysdate) > trunc(fecha_e)
  • 3. 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 p.fecha_e, MIN ((trunc(sysdate)-p.fecha_e)*1250) as min_deuda_dia From prestamo p where p.fecha_e < sysdate group 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. select p.fecha_e, MAX ((trunc(sysdate)-p.fecha_e)*1250) as max_deuda_dia From prestamo p where p.fecha_e < sysdate group by fecha_e; 7. Suponiendo que ninguno de los estudiantes que se encuentran con préstamo entrega sus libros, cuál 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)-p.fecha_e)*1250) as deuda_acumulada From prestamo p where 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.
  • 4. La vista máximos guardada en el sistema de base de datos nos muestra el Rut y nombre del estudiante, además muestra el título del libro prestado y la deuda que tiene el estudiante hasta el momento, además del estudiante que más deuda tiene. La vista mínimos nos muestra también el nombre y el nombre del estudiante, además del título 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 deuda. En cuanto al tema de las subconsultas, se encontró lo siguiente: “una subconsulta es una instrucción SELECT anidada dentro de otra instrucción SELECT: SELECT INTO, INSERT, INTO, DELETE, o UPDATE o dentro de otra subconsulta. Los formatos para las instrucciones de subconsultas son las siguientes: - WHERE expression [NOT] IN (subconsulta) - WHERE expression operador_comparacion [ANY | ALL] (subconsulta) - WHERE [NOT] EXISTS (subconsulta ) 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, count((trunc(sysdate)-p.fecha_e)) as num_atrasado from carreras c, prestamo p, estudiantes e where p.rut_est = e.rut_est and c.id_carrera = e.id_carrera group by c.nombre; 10. Lo 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 l.cod_libro, count(p.rut_est) as cant_est from libros l, prestamo p where l.cod_libro = p.cod_libro group by l.cod_libro;
  • 5. 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 Libros_Prestados, c.nombre as Carrera 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