Sei sulla pagina 1di 7

INTRODUCCIN

Para realizar esta tarea hay que utilizar los conocimientos adquiridos en clase como son las
siguientes clusulas:
FROM: la cual es utilizada para especificar la tabla de la cual se van a seleccionar los
registros.
WHERE: se utiliza para especificar las condiciones que deben reunir los registros que se van
a seleccionar.
GROUP BY: se utiliza para separar los registros seleccionados en grupos especficos.
HAVING: esta es utilizada para expresar la condicin que debe satisfacer cada grupo.
ORDER BY: esta clusula se utiliza para ordenar los registros seleccionados de acuerdo con
un orden especfico.
En base a estos conceptos se resolvern cada una de las consultas propuestas por el
docente

Huasco Roberto

5to A1 Sistemas

OBJETIVOS
Objetivo General
Demostrar los conocimientos adquiridos en el aula de clase por medio de la correcta
resolucin y ejecucin de las consultas de SQL propuestas por el docente para as obtener
una calificacin acorde a mis conocimientos en la materia.
Objetivos Especficos

Realizar el respectivo anlisis de cada una de las consultas propuestas por el docente.
Seleccionar el mtodo ms eficiente para cumplir las necesidades de cada una de las
consultas para luego aplicarlo de la mejor manera.
Verificar que los resultados obtenidos por cada consulta son los resultados esperados.

Huasco Roberto

5to A1 Sistemas

DESARROLLO
Diagrama de base de datos

Resolucin del script


REALIZAR EL SIGUIENTE EJERCICIO DE INSERCION EN LA TABLA RESERVA
Insertar en la tabla reserva 50 registros aleatoriamente, para ello hay que tomar en cuenta
Los siguientes puntos:
1. El registro investigador y equipo se lo genera aleatoriamente entre nmeros del 1 - 10 para
Ello se utiliza la siguiente funcin.
(SELECT ROUND(((10 - 1) * RAND() + 1), 0)) ->
me permite generar un numero aleatoriamente entre 1-10
2. La fecha inicial y fecha final se le debe aumentar 15 dias para ello se utiliza la funcin
DATEADD.
Todo esto debe ir dentro de un ciclo repetitivo.
DECLARE @fecha date = '01/01/2015';
DECLARE @indice INT = 1;
WHILE @indice <= 50
BEGIN;
insert into reserva values(@indice,(SELECT ROUND(((10 - 1) * RAND() + 1), 0)),
(SELECT ROUND(((10 - 1) * RAND() + 1), 0)),@fecha,(SELECT DATEADD(DAY,15,@fecha)))
SET @fecha= (SELECT DATEADD(DAY,15,@fecha))
SET @indice=@indice+1;
END;

Huasco Roberto

5to A1 Sistemas

REALIZAR LAS SIGUIENTES CONSULTAS


1. Obtener un listado completo de reservas total
select r.numeroreserva, i.nombre investigador,
e.nombre equipo, r.fechainicio,r.fechafinal
from reserva r
join investigador i on r.idinvestigador = i.idinvestigador
join equipo e on r.idequipo = e.idequipo

2. Obtener el nombre y cedula de aquellos investigadores que hayan realizado ms de 4 reservas


select i.nombre, i.cedula
from investigador i, reserva r
where r.idinvestigador = i.idinvestigador
group by i.nombre, i.cedula
having count(r.idinvestigador) > 4

3. Obtener el nombre, cedula, y cantidad de reservas que han realizado los investigadores
select i.nombre, i.cedula, count(r.idinvestigador) reservas
from investigador i
left join reserva r on r.idinvestigador = i.idinvestigador
group by i.nombre, i.cedula

4. Obtener el nombre, cedula y la cantidad mas alta de reservas realizadas por los investigadores
select top 1 i.nombre, i.cedula, count(r.idinvestigador) reservas
from investigador i, reserva r
where r.idinvestigador = i.idinvestigador
group by i.nombre, i.cedula
order by reservas desc

Huasco Roberto

5to A1 Sistemas

5. Obtener los investigadores que han reservado equipos pero que estos equipos no son de la misma facultad
select i.nombre as investigador
from investigador i, reserva r, equipo e
where i.idinvestigador=r.idinvestigador
and r.idequipo = e.idequipo
and e.idfacultad != i.idfacultad
group by i.nombre

6. Obtener un listado de los equipos y la cantidad de veces que se han reservado


select e.nombre , count (r.idequipo) reservas
from equipo e
left join reserva r on e.idequipo = r.idequipo
group by nombre

7. Obtener el equipo ms y menos reservado por parte de los investigadores


select top 1 e.nombre Equipo, 'Mayor reservas'=count(e.idequipo)
from equipo e, reserva r, investigador i
where e.idequipo = r.idequipo and i.idinvestigador=r.idinvestigador
group by e.nombre
order by 'Mayor reservas' desc
select top 1 e.nombre Equipo, 'Menor reservas'= count(e.idequipo)
from equipo e, reserva r, investigador i
where e.idequipo = r.idequipo and i.idinvestigador=r.idinvestigador
group by e.nombre
order by 'Menor reservas' asc

8. Obtener el nombre de la facultad con su respectiva cantidad de investigadores


select f.nombre, count (f.idfacultad) investigadores
from facultad f, investigador i
where f.idfacultad =i.idfacultad
group by f.nombre

Huasco Roberto

5to A1 Sistemas

9. Obtener el listado de equipos y la cantidad de dias que se han prestado en su totalidad


select e.nombre, 'Dias Prestados'=count(r.fechainicio)*15
from equipo e
left join reserva r on e.idequipo = r.idequipo
group by nombre

10. Obtener los nombres de las facultades con investigadores que no han realizado ninguna reserva.
select f.nombre Facultad
from facultad f
join investigador i on f.idfacultad =i.idfacultad
left join reserva r on r.idinvestigador = i.idinvestigador
where r.idinvestigador is null
group by f.nombre

11. Obtener el nombre de los equipos que nunca han sido reservados
select e.nombre
from equipo e
left join reserva r on r.idequipo = e.idequipo
where r.idinvestigador is null
group by e.nombre

Huasco Roberto

5to A1 Sistemas

CONCLUSIN
Despus del proceso de anlisis de las consultas he podido seleccionar el mejor mtodo que
cumpla con los requerimientos para luego aplicarlo segn la necesidad de cada una de las
consultas y posteriormente verificar la correcta ejecucin del cdigo por medio de los datos
capturados en imgenes adjuntas en este documento, demostrando as los conocimientos
adquiridos en el aula de clase.

Huasco Roberto

5to A1 Sistemas

Potrebbero piacerti anche