14
UNIVERSIDAD AUSTRAL DE CHILE FACULTAD DE CIENCIAS ECONÓMICAS Y ADMINISTRATIVAS INSTITUTO DE ADMINISTRACIÓN Sistemas de Información Empresarial Sistemas de Información Empresarial Nombre: Valeria Muñoz Ortiz

Consultas en SQL

Embed Size (px)

Citation preview

Page 1: Consultas en SQL

UNIVERSIDAD AUSTRAL DE CHILE

FACULTAD DE CIENCIAS ECONÓMICAS Y ADMINISTRATIVAS

INSTITUTO DE ADMINISTRACIÓN

Sistemas de Información Empresarial

Sistemas de Información Empresarial

Nombre:

Valeria Muñoz Ortiz

21 de mayo de 2012, Valdivia

Page 2: Consultas en SQL

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: 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 p.rut_est, e.nombres, e.apellidos, l.titulo, (trunc(sysdate) - trunc(p.fecha_e)) as ATRASOfrom prestamo p, estudiantes e, libros lwhere p.rut_est = e.rut_estand p.cod_libro = l.cod_libroand trunc(sysdate) > trunc(p.fecha_e)

239 Datos.

Page 3: Consultas en SQL

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 p.rut_est, e.nombres, e.apellidos, l.titulo, (trunc(sysdate) - trunc(p.fecha_e)) as ATRASO, (trunc(sysdate) - trunc(p.fecha_e))*1250 as DEUDAfrom prestamo p, estudiantes e, libros lwhere p.rut_est = e.rut_estand p.cod_libro = l.cod_libroand trunc(sysdate) > trunc(p.fecha_e)

239 datos

Page 4: Consultas en SQL

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 INGRESO_BIBLIOfrom prestamo p, estudiantes e, libros lwhere p.rut_est = e.rut_estand p.cod_libro = l.cod_libroand trunc(sysdate) > trunc(p.fecha_e)

1188750 datos

Page 5: Consultas en SQL

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 ROUND(AVG ((trunc(sysdate) - trunc(p.fecha_e))*1250)) AS PROM_DEUDAfrom prestamo p, estudiantes e, libros lwhere p.rut_est = e.rut_estand p.cod_libro = l.cod_libroand trunc(sysdate) > trunc(p.fecha_e)

4974 Datos

Page 6: Consultas en SQL

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) - trunc(p.fecha_e))*1250) AS MIN_DEUDAfrom prestamo p, estudiantes e, libros lwhere p.rut_est = e.rut_estand p.cod_libro = l.cod_libroand trunc(sysdate) > trunc(p.fecha_e)

1250 Datos

Page 7: Consultas en SQL

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) - trunc(p.fecha_e))*1250) AS MIN_DEUDAfrom prestamo p, estudiantes e, libros lwhere p.rut_est = e.rut_estand p.cod_libro = l.cod_libroand trunc(sysdate) > trunc(p.fecha_e)

23750 Datos

Page 8: Consultas en SQL

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) - trunc(p.fecha_e))*1250) AS DEUDA_4_DIASfrom prestamo p, estudiantes e, libros lwhere p.rut_est = e.rut_estand p.cod_libro = l.cod_libroand trunc(sysdate+4) > trunc(p.fecha_e)

2643750 Datos

Page 9: Consultas en SQL

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.

Definición de subconsultas.

Una subconsulta es una sentencia SELECT que aparece dentro de otra sentencia SELECT. Normalmente se utilizan para filtrar una clausula WHERE o HAVING con el conjunto de resultados de la subconsulta, aunque también pueden utilizarse en la lista de selección.

Por ejemplo podríamos consultar el alquiler último de un cliente.

 SELECT CO_CLIENTE, NOMBRE, MARCA, MODDELO FROM ALQUILERES WHERE CO_CLIENTE = 1 AND   FECHA_ALQUILER = (SELECT MAX(FECHA_ALQUILER)        FROM ALQUILERES        WHERE CO_CLIENTE = 1)

           En este caso, la subconsulta se ejecuta en primer lugar, obteniendo el valor de la máxima fecha de alquiler, y posteriormente se obtienen los datos de la consulta principal.

    Una subconsulta tiene la misma sintaxis que una sentencia SELECT normal exceptuando que aparece encerrada entre paréntesis.

    La subconsulta se puede encontrar en la lista de selección, en la cláusula WHERE o en la cláusula HAVING de la consulta principal.

Tiene las siguientes restricciones:

No puede contener la cláusula ORDER BY No puede ser la UNION de varias sentencias SELECT

Si la subconsulta aparece en la lista de selección, o esta asociada a un operador igual "=" solo puede devolver un único registro.

Referencias externas      A menudo, es necesario, dentro del cuerpo de una subconsulta, hacer referencia al valor de una columna de la fila actual en la consulta principal, ese nombre de columna se denomina referencia externa.

    Una referencia externa es un campo que aparece en la subconsulta pero se refiere a la una de las tablas designadas en la consulta principal.

    Cuando se ejecuta una consulta que contiene una subconsulta con referencias externas, la subconsulta se ejecuta por cada fila de la consulta principal.

Page 10: Consultas en SQL

    En este ejemplo la subconsulta aparece en la lista de selección, ejecutándose una vez por cada fila que devuelve la consulta principal.

 SELECT CO_EMPLEADO,      NOMBRE,      (SELECT MIN(FECHA_NOMINA)

FROM NOMINAS WHERE CO_EMPLEADO = EMPLEADOS.CO_EMPLEADO) PRIMERA_NOMINA

 FROM EMPLEADOS;

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 COUNT(e.rut_est), c.nombrefrom prestamo p, estudiantes e, carreras cwhere p.rut_est = e.rut_estAND e.id_carrera = c.id_carreraand trunc(sysdate) > trunc(p.fecha_e)group by c.nombre

Page 11: Consultas en SQL

45 Datos

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 COUNT(e.rut_est), c.nombrefrom prestamo p, estudiantes e, carreras cwhere p.rut_est = e.rut_estAND e.id_carrera = c.id_carreragroup by c.nombre

45 Datos

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.

Page 12: Consultas en SQL

select * from (select COUNT(e.rut_est), c.nombrefrom prestamo p, estudiantes e, carreras cwhere p.rut_est = e.rut_estAND e.id_carrera = c.id_carreragroup by c.nombreorder by COUNT(e.rut_est) desc)where rownum <=10