SlideShare una empresa de Scribd logo
1 de 8
UNIVERSIDAD AUSTRAL DE CHILE

 FACULTAD DE CIENCIAS ECONÓMICAS Y ADMINISTRATIVAS

                INSTITUTO DE ADMINISTRACIÓN




Laboratorio N° 2
Oracle / PLSQL
                        Alumna:

                    Nadia Muñoz B.

                       Asignatura:

          Sistemas de Información Empresarial

           Profesor:                 Ayudante:

       Cristian Salazar C.    José Luis Carrasco




             Valdivia, 21 de mayo de 2012
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.nombres,

               e.apellidos,

               e.rut_est,

               p.fecha_E,

               TRUNC (sysdate)-p.fecha_eAS "Nrodias atraso"

FROM           estudiantes e, prestamo p
WHERE          e.rut_est=p.rut_est
AND            p.fecha_e<TRUNC(sysdate);

La consulta genera 291 resultados, de los cuales 10 se presentan a continuación:




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.nombres,

               e.apellidos,

               e.rut_est,

               p.fecha_E,

               TRUNC (sysdate)-p.fecha_e AS "Nrodias atraso",

               (TRUNC (sysdate)-p.fecha_e)*'1250' AS "Deuda"
FROMestudiantes e, prestamo p

WHEREe.rut_est=p.rut_est

ANDp.fecha_e<TRUNC(sysdate);

La consulta genera 291 resultados, de los cuales se muestran 10 a continuación:




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') AS "Deuda acumulada"

FROM           prestamo p

WHERE          p.fecha_e<TRUNC (sysdate);

El resultado que arroja la consulta es el siguiente:




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') AS "Promedio deuda estudiantes"

FROM           prestamo p

WHERE          p.fecha_e<TRUNC (sysdate);

El resultado que arroja la consulta es el siguiente:




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') AS "Minima deuda acumulada"

FROM          prestamo p

WHERE         p.fecha_e<TRUNC (sysdate);

La mínima deuda acumulada de los estudiantes, al día de hoy es la que se muestra a
continuación:




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') AS "Maxima deuda acumulada"

FROM          prestamo p

WHERE         p.fecha_e<TRUNC (sysdate);

La máxima deuda acumulada de los estudiantes, al día de hoy es la siguiente:




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.

SELECT        SUM ((Trunc (sysdate+4)-p.fecha_e)*'1250') AS "Deuda acumulada 4 dias"

FROM          prestamo p

WHERE         p.fecha_e<TRUNC(sysdate+4);

La deuda acumulada para 4 días más sería la siguiente, si ninguno de los estudiantes
entregan sus libros para esa fecha:




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 primera vista presentada en el sistema de Base de Datos es la siguiente:

create or replace view maximos as

selectp.rut_est RUT,

e.apellidos || ' ' || e.nombres NOMBRE,

l.titulo,

     (trunc(sysdate) - trunc(p.fecha_e)) * 1250 as DIAS_ATRASO

fromprestamo p, estudiantes e, libros l

wheretrunc(p.fecha_e) <trunc(sysdate)

andp.rut_est = e.rut_est

andp.cod_libro = l.cod_libro

and (trunc(sysdate) - trunc(p.fecha_e)) =      (select max(trunc(sysdate) - trunc(p2.fecha_e))

                                               fromprestamo p2

                                               wheretrunc(p2.fecha_e) <trunc(sysdate))

Esta vista corresponde a una consulta que entregue el RUT, los NOMBRES y APELLIDOS
(en una sola columna) del estudiante, el TITULO del libro prestado y la DEUDA que tiene
generada por los días de atraso. Para unir los nombres con los apellidos se utilizó || ' ' ||, así
en una sola columna aparecen tanto los nombres, como los apellidos. La deuda por los días
de atraso (que ahí se muestra como “DIAS_ATRASO”) está calculada haciendo la
diferencia o resta entre la fecha de hoy y la fecha de entrega del libro, multiplicado por el
valor de un día de atraso. Posteriormente, se aplican las restricciones correspondientes,
tales como la condición de préstamo atrasado indicada por “fecha de entrega es menor a la
fecha de hoy”, la igualación de PK y FK de las tablas utilizadas, y finalmente una
subconsulta(está entre paréntesis) que entrega la máxima cantidad de días de atraso. La
subconsulta se utiliza para filtrar la WHERE, haciendo que de todos los estudiantes que
tienen libros atrasados, sólo se muestre aquel estudiante que tiene la máxima deuda, ya que
tiene más días de atraso.

El resultado que genera la consulta es el siguiente:




La segunda vista es la siguiente:
create or replace view minimos as

selectp.rut_est RUT,

e.apellidos || ' ' || e.nombres NOMBRE,

l.titulo,

     (trunc(sysdate) - trunc(p.fecha_e)) * 1250 as DIAS_ATRASO

fromprestamo p, estudiantes e, libros l

wheretrunc(p.fecha_e) <trunc(sysdate)

andp.rut_est = e.rut_est

andp.cod_libro = l.cod_libro

and (trunc(sysdate) - trunc(p.fecha_e)) =   (select min(trunc(sysdate) - trunc(p2.fecha_e))

                                            fromprestamo p2

                                            wheretrunc(p2.fecha_e) <trunc(sysdate))

Esta vista es similar a la anterior. La diferencia está en que esta entrega como resultado a
los estudiantes cuya deuda es mínima, en este caso son aquellos que tienen el mínimo de
días de atraso (uno). De estos estudiantes se muestra su RUT, NOMBRES y APELLIDOS
en una sola columna, el TITULO del libro prestado, y la deuda generada por los días de
atraso en la entrega del libro. La vista de la consulta está estructurada igualmente que la
anterior, se diferencian sólo en que ésta corresponde al mínimo y la anterior al máximo.

Esta consulta genera 52 resultados cuya deuda es mínima, de ellos se presentan 10 a
continuación:




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        car.nombre, count (p.rut_est)AS "EST_atrasados"
FROM          carreras car, prestamo p, estudiantes e

WHERE         car.id_carrera=e.id_carrera

AND           e.rut_est=p.rut_est

AND           TRUNC(sysdate)>p.fecha_e

GROUP BY car.nombre;

Esta tabla arroja 45 resultados, de los cuales 10 se muestran a continuación:




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        car.nombre, count (p.rut_est)AS "Prestamos"

FROM          carreras car, prestamo p, estudiantes e

WHERE         car.id_carrera=e.id_carrera

AND           e.rut_est=p.rut_est

GROUPBY car.nombre;

La consulta arroja 45 resultados (de las 45 carreras) con los correspondientes préstamos que
tienen sus estudiantes. En este caso, la tabla coincide con la anterior puesto que a la fecha
de hoy (21 de mayo) todos los estudiantes se encontrarían con préstamos atrasados, es
decir, no existe alguno que esté al día. La tabla generada es la siguiente:
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 car.nombre, COUNT (p.rut_est)AS "Librosprestados"

                FROM carreras car, estudiantes e, prestamo p

                WHERE car.id_carrera=e.id_carrera

                AND e.rut_est=p.rut_est

                GROUP BY car.nombre

                ORDER BY COUNT (p.rut_est) DESC)

WHERE           ROWNUM<=10;

Las 10 carreras con mayor cantidad de libros prestados son las siguientes:

Más contenido relacionado

Destacado

Taller: Data Centers, la innovación irrumpe en sus estructuras y funcionalidad
Taller: Data Centers, la innovación irrumpe en sus estructuras y funcionalidadTaller: Data Centers, la innovación irrumpe en sus estructuras y funcionalidad
Taller: Data Centers, la innovación irrumpe en sus estructuras y funcionalidadMundo Contact
 
Intro sql y plsql
Intro sql y plsqlIntro sql y plsql
Intro sql y plsqlolsoftware
 
Directivas de grupo locales en Windows Server 2008
Directivas de grupo locales en Windows Server 2008Directivas de grupo locales en Windows Server 2008
Directivas de grupo locales en Windows Server 2008YinaGarzon
 
GPO-SO
GPO-SOGPO-SO
GPO-SOxipox
 
[WEBINAR] 10 cosas que debes saber sobre Active Directory.
[WEBINAR] 10 cosas que debes saber sobre Active Directory.[WEBINAR] 10 cosas que debes saber sobre Active Directory.
[WEBINAR] 10 cosas que debes saber sobre Active Directory.Grupo Smartekh
 
Correccion del examen de sistema gestor de base de datos
Correccion del examen de sistema gestor de base de datosCorreccion del examen de sistema gestor de base de datos
Correccion del examen de sistema gestor de base de datosDemond Zuicide
 
Fundamentos sobre los Bloqueos en SQL Server
Fundamentos sobre los Bloqueos en SQL ServerFundamentos sobre los Bloqueos en SQL Server
Fundamentos sobre los Bloqueos en SQL ServerKike Puig
 
Active Directory
Active DirectoryActive Directory
Active Directoryshantads
 
Como leer planes de ejecución - edición 2015
Como leer planes de ejecución - edición 2015Como leer planes de ejecución - edición 2015
Como leer planes de ejecución - edición 2015Enrique Catala Bañuls
 
Estructura fisica y logica de active directory
Estructura fisica y logica de active directoryEstructura fisica y logica de active directory
Estructura fisica y logica de active directoryEduardo J Onofre
 
Presentacion de Qlik Sense para usuarios QlikView
Presentacion de Qlik Sense para usuarios QlikViewPresentacion de Qlik Sense para usuarios QlikView
Presentacion de Qlik Sense para usuarios QlikViewData IQ Argentina
 
Semana 2 funciones sql en plsql
Semana 2 funciones sql en plsqlSemana 2 funciones sql en plsql
Semana 2 funciones sql en plsqlvictdiazm
 
Unidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sqlUnidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sqlTitiushko Jazz
 

Destacado (18)

Taller: Data Centers, la innovación irrumpe en sus estructuras y funcionalidad
Taller: Data Centers, la innovación irrumpe en sus estructuras y funcionalidadTaller: Data Centers, la innovación irrumpe en sus estructuras y funcionalidad
Taller: Data Centers, la innovación irrumpe en sus estructuras y funcionalidad
 
Desarrollador-QlikView
Desarrollador-QlikViewDesarrollador-QlikView
Desarrollador-QlikView
 
Lab 25 06
Lab 25 06Lab 25 06
Lab 25 06
 
Intro sql y plsql
Intro sql y plsqlIntro sql y plsql
Intro sql y plsql
 
Directivas de grupo locales en Windows Server 2008
Directivas de grupo locales en Windows Server 2008Directivas de grupo locales en Windows Server 2008
Directivas de grupo locales en Windows Server 2008
 
Directiva de grupo
Directiva de grupoDirectiva de grupo
Directiva de grupo
 
GPO-SO
GPO-SOGPO-SO
GPO-SO
 
[WEBINAR] 10 cosas que debes saber sobre Active Directory.
[WEBINAR] 10 cosas que debes saber sobre Active Directory.[WEBINAR] 10 cosas que debes saber sobre Active Directory.
[WEBINAR] 10 cosas que debes saber sobre Active Directory.
 
Presentacion de Qlik Sense
Presentacion de Qlik SensePresentacion de Qlik Sense
Presentacion de Qlik Sense
 
Correccion del examen de sistema gestor de base de datos
Correccion del examen de sistema gestor de base de datosCorreccion del examen de sistema gestor de base de datos
Correccion del examen de sistema gestor de base de datos
 
Active directory
Active directoryActive directory
Active directory
 
Fundamentos sobre los Bloqueos en SQL Server
Fundamentos sobre los Bloqueos en SQL ServerFundamentos sobre los Bloqueos en SQL Server
Fundamentos sobre los Bloqueos en SQL Server
 
Active Directory
Active DirectoryActive Directory
Active Directory
 
Como leer planes de ejecución - edición 2015
Como leer planes de ejecución - edición 2015Como leer planes de ejecución - edición 2015
Como leer planes de ejecución - edición 2015
 
Estructura fisica y logica de active directory
Estructura fisica y logica de active directoryEstructura fisica y logica de active directory
Estructura fisica y logica de active directory
 
Presentacion de Qlik Sense para usuarios QlikView
Presentacion de Qlik Sense para usuarios QlikViewPresentacion de Qlik Sense para usuarios QlikView
Presentacion de Qlik Sense para usuarios QlikView
 
Semana 2 funciones sql en plsql
Semana 2 funciones sql en plsqlSemana 2 funciones sql en plsql
Semana 2 funciones sql en plsql
 
Unidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sqlUnidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sql
 

Similar a Laboratorio n° 2

Similar a Laboratorio n° 2 (20)

Tarea 2
Tarea 2Tarea 2
Tarea 2
 
Ayudantia 14 05
Ayudantia 14 05Ayudantia 14 05
Ayudantia 14 05
 
Laboratorio14.05.2012
Laboratorio14.05.2012Laboratorio14.05.2012
Laboratorio14.05.2012
 
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 namuncura
 
Laboratorio Nº 3 SIA
Laboratorio Nº 3 SIALaboratorio Nº 3 SIA
Laboratorio Nº 3 SIA
 
Laboratorio Nº 4 SIA
Laboratorio Nº 4 SIALaboratorio Nº 4 SIA
Laboratorio Nº 4 SIA
 
Segundo informe ayudantía
Segundo informe ayudantíaSegundo informe ayudantía
Segundo informe ayudantía
 
Laboratorio n2 de ayudantía sie
Laboratorio n2 de ayudantía  sieLaboratorio n2 de ayudantía  sie
Laboratorio n2 de ayudantía sie
 
Laboratorio
LaboratorioLaboratorio
Laboratorio
 
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)
 
Lab 2
Lab 2Lab 2
Lab 2
 
Lab 2
Lab 2Lab 2
Lab 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)
 
PLSQL
PLSQLPLSQL
PLSQL
 
Trabajo ayudantía
Trabajo ayudantíaTrabajo ayudantía
Trabajo ayudantía
 
Laboratorio n° 1
Laboratorio n° 1Laboratorio n° 1
Laboratorio n° 1
 
Actividad 1 Ayudantia. Consultas y Vistas
Actividad 1 Ayudantia. Consultas y VistasActividad 1 Ayudantia. Consultas y Vistas
Actividad 1 Ayudantia. Consultas y Vistas
 

Laboratorio n° 2

  • 1. UNIVERSIDAD AUSTRAL DE CHILE FACULTAD DE CIENCIAS ECONÓMICAS Y ADMINISTRATIVAS INSTITUTO DE ADMINISTRACIÓN Laboratorio N° 2 Oracle / PLSQL Alumna: Nadia Muñoz B. Asignatura: Sistemas de Información Empresarial Profesor: Ayudante: Cristian Salazar C. José Luis Carrasco Valdivia, 21 de mayo de 2012
  • 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.nombres, e.apellidos, e.rut_est, p.fecha_E, TRUNC (sysdate)-p.fecha_eAS "Nrodias atraso" FROM estudiantes e, prestamo p WHERE e.rut_est=p.rut_est AND p.fecha_e<TRUNC(sysdate); La consulta genera 291 resultados, de los cuales 10 se presentan a continuación: 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.nombres, e.apellidos, e.rut_est, p.fecha_E, TRUNC (sysdate)-p.fecha_e AS "Nrodias atraso", (TRUNC (sysdate)-p.fecha_e)*'1250' AS "Deuda"
  • 3. FROMestudiantes e, prestamo p WHEREe.rut_est=p.rut_est ANDp.fecha_e<TRUNC(sysdate); La consulta genera 291 resultados, de los cuales se muestran 10 a continuación: 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') AS "Deuda acumulada" FROM prestamo p WHERE p.fecha_e<TRUNC (sysdate); El resultado que arroja la consulta es el siguiente: 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') AS "Promedio deuda estudiantes" FROM prestamo p WHERE p.fecha_e<TRUNC (sysdate); El resultado que arroja la consulta es el siguiente: 5.- Entregue la mínima deuda acumulada al día de hoy. Ayuda: Utilice la función MIN y la función GROUP BY.
  • 4. SELECT MIN ((Trunc (sysdate)-p.fecha_e)*'1250') AS "Minima deuda acumulada" FROM prestamo p WHERE p.fecha_e<TRUNC (sysdate); La mínima deuda acumulada de los estudiantes, al día de hoy es la que se muestra a continuación: 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') AS "Maxima deuda acumulada" FROM prestamo p WHERE p.fecha_e<TRUNC (sysdate); La máxima deuda acumulada de los estudiantes, al día de hoy es la siguiente: 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. SELECT SUM ((Trunc (sysdate+4)-p.fecha_e)*'1250') AS "Deuda acumulada 4 dias" FROM prestamo p WHERE p.fecha_e<TRUNC(sysdate+4); La deuda acumulada para 4 días más sería la siguiente, si ninguno de los estudiantes entregan sus libros para esa fecha: 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.
  • 5. La primera vista presentada en el sistema de Base de Datos es la siguiente: create or replace view maximos as selectp.rut_est RUT, e.apellidos || ' ' || e.nombres NOMBRE, l.titulo, (trunc(sysdate) - trunc(p.fecha_e)) * 1250 as DIAS_ATRASO fromprestamo p, estudiantes e, libros l wheretrunc(p.fecha_e) <trunc(sysdate) andp.rut_est = e.rut_est andp.cod_libro = l.cod_libro and (trunc(sysdate) - trunc(p.fecha_e)) = (select max(trunc(sysdate) - trunc(p2.fecha_e)) fromprestamo p2 wheretrunc(p2.fecha_e) <trunc(sysdate)) Esta vista corresponde a una consulta que entregue el RUT, los NOMBRES y APELLIDOS (en una sola columna) del estudiante, el TITULO del libro prestado y la DEUDA que tiene generada por los días de atraso. Para unir los nombres con los apellidos se utilizó || ' ' ||, así en una sola columna aparecen tanto los nombres, como los apellidos. La deuda por los días de atraso (que ahí se muestra como “DIAS_ATRASO”) está calculada haciendo la diferencia o resta entre la fecha de hoy y la fecha de entrega del libro, multiplicado por el valor de un día de atraso. Posteriormente, se aplican las restricciones correspondientes, tales como la condición de préstamo atrasado indicada por “fecha de entrega es menor a la fecha de hoy”, la igualación de PK y FK de las tablas utilizadas, y finalmente una subconsulta(está entre paréntesis) que entrega la máxima cantidad de días de atraso. La subconsulta se utiliza para filtrar la WHERE, haciendo que de todos los estudiantes que tienen libros atrasados, sólo se muestre aquel estudiante que tiene la máxima deuda, ya que tiene más días de atraso. El resultado que genera la consulta es el siguiente: La segunda vista es la siguiente:
  • 6. create or replace view minimos as selectp.rut_est RUT, e.apellidos || ' ' || e.nombres NOMBRE, l.titulo, (trunc(sysdate) - trunc(p.fecha_e)) * 1250 as DIAS_ATRASO fromprestamo p, estudiantes e, libros l wheretrunc(p.fecha_e) <trunc(sysdate) andp.rut_est = e.rut_est andp.cod_libro = l.cod_libro and (trunc(sysdate) - trunc(p.fecha_e)) = (select min(trunc(sysdate) - trunc(p2.fecha_e)) fromprestamo p2 wheretrunc(p2.fecha_e) <trunc(sysdate)) Esta vista es similar a la anterior. La diferencia está en que esta entrega como resultado a los estudiantes cuya deuda es mínima, en este caso son aquellos que tienen el mínimo de días de atraso (uno). De estos estudiantes se muestra su RUT, NOMBRES y APELLIDOS en una sola columna, el TITULO del libro prestado, y la deuda generada por los días de atraso en la entrega del libro. La vista de la consulta está estructurada igualmente que la anterior, se diferencian sólo en que ésta corresponde al mínimo y la anterior al máximo. Esta consulta genera 52 resultados cuya deuda es mínima, de ellos se presentan 10 a continuación: 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 car.nombre, count (p.rut_est)AS "EST_atrasados"
  • 7. FROM carreras car, prestamo p, estudiantes e WHERE car.id_carrera=e.id_carrera AND e.rut_est=p.rut_est AND TRUNC(sysdate)>p.fecha_e GROUP BY car.nombre; Esta tabla arroja 45 resultados, de los cuales 10 se muestran a continuación: 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 car.nombre, count (p.rut_est)AS "Prestamos" FROM carreras car, prestamo p, estudiantes e WHERE car.id_carrera=e.id_carrera AND e.rut_est=p.rut_est GROUPBY car.nombre; La consulta arroja 45 resultados (de las 45 carreras) con los correspondientes préstamos que tienen sus estudiantes. En este caso, la tabla coincide con la anterior puesto que a la fecha de hoy (21 de mayo) todos los estudiantes se encontrarían con préstamos atrasados, es decir, no existe alguno que esté al día. La tabla generada es la siguiente:
  • 8. 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 car.nombre, COUNT (p.rut_est)AS "Librosprestados" FROM carreras car, estudiantes e, prestamo p WHERE car.id_carrera=e.id_carrera AND e.rut_est=p.rut_est GROUP BY car.nombre ORDER BY COUNT (p.rut_est) DESC) WHERE ROWNUM<=10; Las 10 carreras con mayor cantidad de libros prestados son las siguientes: