4
Consultas con Cálculos Alumna: Paula Valdeavellano D.

consultas con calculos en PLSQL

Embed Size (px)

Citation preview

Page 1: consultas con calculos en PLSQL

Consultas con Cálculos

Alumna: Paula Valdeavellano D.

Fecha : 21-05-12

Page 2: consultas con calculos en PLSQL

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.

SELECT E.NOMBRES AS NOMBRE, E.APELLIDOS AS APELLIDO, P.RUT_EST AS RUT, P.FECHA_E AS F_DE_ENTREGA, TRUNC(SYSDATE) - P.FECHA_E AS DÍAS_ATRASADOS FROM ESTUDIANTES E, PRESTAMO P WHERE E.RUT_EST = P.RUT_EST AND P.FECHA_E < TRUNC(SYSDATE)

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.

SELECT E.NOMBRES AS NOMBRE, E.APELLIDOS AS APELLIDO, P.RUT_EST AS RUT, P.FECHA_E AS FECHA_ENTREGA, TRUNC(SYSDATE) - P.FECHA_E AS DÍAS_ATRASADOS, ((TRUNC(SYSDATE) - P.FECHA_E) * 1250) AS DEBE FROM ESTUDIANTES E, PRESTAMO P WHERE E.RUT_EST = P.RUT_EST AND P.FECHA_E < TRUNC(SYSDATE)

3. Entregue la suma de dinero que ganará la Biblioteca acumulada al día de hoy.

SELECT SUM((TRUNC(SYSDATE) - P.FECHA_E) * 1250) AS RECAUDADO FROM ESTUDIANTES E, PRESTAMO P WHERE E.RUT_EST = P.RUT_EST AND P.FECHA_E < TRUNC(SYSDATE)

4. Entregue el promedio de deuda que tienen los estudiantes al día de hoy.

SELECT TRUNC(AVG((TRUNC(SYSDATE) - P.FECHA_E) * 1250)) AS X_DEUDA FROM ESTUDIANTES E, PRESTAMO P WHERE E.RUT_EST = P.RUT_EST AND P.FECHA_E < TRUNC(SYSDATE)

5. Entregue la mínima deuda acumulada al día de hoy.

SELECT (MIN((TRUNC(SYSDATE) - P.FECHA_E) * 1250)) AS DEUDA_MINIMA FROM ESTUDIANTES E, PRESTAMO P WHERE E.RUT_EST = P.RUT_EST AND P.FECHA_E < TRUNC(SYSDATE)

Page 3: consultas con calculos en PLSQL

6. Entregue la máxima deuda acumulada al día de hoy. SELECT (MAX((TRUNC(SYSDATE) - P.FECHA_E) * 1250)) AS DEUDA_MAXIMA FROM ESTUDIANTES E, PRESTAMO P WHERE E.RUT_EST = P.RUT_EST AND P.FECHA_E < TRUNC(SYSDATE)

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.

SELECT SUM((TRUNC(SYSDATE + 4) - P.FECHA_E) * 1250) AS RECAUDADO FROM ESTUDIANTES E, PRESTAMO P WHERE E.RUT_EST = P.RUT_EST AND P.FECHA_E < TRUNC(SYSDATE + 4)

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.

Se selecciona el nombre, el apellido, Rut del estudiante y el título del libro que tiene prestado el estudiante y que además posee la mayor o menor deuda en biblioteca (dependerá si se solicita MAXIMO o MINIMO) mediante la búsqueda, se tendrá como restricción todas las fechas que superen la fecha de entrega como días atrasados y utilizando trunc (sysdate) para filtrar horas, min, etc., la información será seleccionada de las tablas libros, préstamo y estudiantes.

9. Entregue el nombre de la carrera y la cantidad de estudiantes por cada una de ellas que tiene libros atrasados.

SELECT C.NOMBRE AS CARRERA, COUNT(P.FECHA_E) AS ATRASOS FROM CARRERAS C, PRESTAMO P, ESTUDIANTES E WHERE C.ID_CARRERA = E.ID_CARRERA AND E.RUT_EST = P.RUT_EST AND P.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 AS CARRERA, COUNT(P.FECHA_E) AS PRESTAMOS FROM CARRERAS C, PRESTAMO P, ESTUDIANTES E WHERE C.ID_CARRERA = E.ID_CARRERA AND E.RUT_EST = P.RUT_EST GROUP BY C.NOMBRE

Page 4: consultas con calculos en PLSQL

11. Investigue como entregar las 10 carreras que tienen mayor cantidad de libros en préstamo.

SELECT * FROM (SELECT C.NOMBRE AS CARRERA, COUNT(P.FECHA_E) AS PRESTAMOS FROM CARRERAS C, PRESTAMO P, ESTUDIANTES E WHERE C.ID_CARRERA = E.ID_CARRERA AND E.RUT_EST = P.RUT_EST GROUP BY C.NOMBRE ORDER BY COUNT(P.FECHA_E) DESC) WHERE ROWNUM <= 10