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

6
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.

description

Laboratorio 2. Ayudantía de Sistemas

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

Page 1: Trabajo 2. ayudantía. elmar alarcón namuncura

UNIVERSIDAD AUSTRAL DE CHILEFACULTAD DE CIENCIAS ECONÓMICAS Y ADMINISTRATIVAS

INSTITUTO DE ADMINISTRACIÓNADMI 273

Laboratorio N°2Consultas 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

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

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.

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.

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

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;

select sum((trunc(sysdate) - trunc(p.fecha_e))*1250) as Deuda_Total_Atrasos from prestamo p where trunc(sysdate) > trunc(fecha_e)

Page 3: Trabajo 2. ayudantía. elmar alarcón namuncura

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.

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

MIN y la función GROUP BY.

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

MAX y la función GROUP BY.

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

select p.fecha_e, MIN ((trunc(sysdate)-p.fecha_e)*1250) as min_deuda_dia From prestamo pwhere p.fecha_e < sysdate group by fecha_e;

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;

select SUM((trunc(sysdate+4)-p.fecha_e)*1250) as deuda_acumuladaFrom prestamo p where p.fecha_e < sysdate;

Page 4: Trabajo 2. ayudantía. elmar alarcón namuncura

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;

Page 5: Trabajo 2. ayudantía. elmar alarcón namuncura

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.

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

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