• No se han encontrado resultados

Consultas SQL resueltas Base de Datos FIUBA

N/A
N/A
Protected

Academic year: 2021

Share "Consultas SQL resueltas Base de Datos FIUBA"

Copied!
6
0
0

Texto completo

(1)

Consultas SQL resueltas

Base de Datos

FIUBA

Pablo Musumeci

pmusumeci@fi.uba.ar

Revisado por:

Florencia Bosch

Mart´ın Buchwald

10 de febrero de 2014

(2)

1.

Sueldos y pilotos

1.1.

Esquemas

Vuelo(VueloNro, Desde, HAcia, Distancia) Aeronave (aID, aNombre, Rango)

Certificado(eID, aID)

Empleado(eID, eNombre, Sueldo)

1.2.

Enunciado

La relacion empleado contiene datos de todos los empleados de la compa˜nia. En la relacion certificado solo figuran los pilotos certificados para volar una determinada aeronave.

Listar los nombres y sueldos de los empleados que no son pilotos pero que su sueldo es superior al promedio de los pilotos.

1.3.

Consulta

SELECT e . enombre , e . s u e l d o FROM empleado e WHERE e . e i d NOT IN ( SELECT c . e i d FROM c e r t i f i c a d o c ) AND e . s u e l d o > ( SELECT AVG( e2 . s u e l d o ) FROM empleado e2 WHERE e2 . e i d IN ( SELECT c2 . e i d FROM c e r t i f i c a d o c2 ) ) ;

1.4.

Enunciado

Listar los nombres de los pilotos que pueden volar aeronaves con rango de crucero mayor a 5000 millas pero que no est´an certificados en ning´un avi´on Boeing.

SELECT DISTINCT e . eNombre

FROM Empleado e , Aeronave a , C e r t i f i c a d o c WHERE e . eID = c . eID AND a . aID = c . aID

AND a . r a n g o > 5000 AND NOT EXISTS ( SELECT ∗

FROM C e r t i f i c a d o c2 , Aeronave a2

WHERE a2 . aID = c2 . aID AND e . eID = c2 . eID AND a2 . aNombre = " BOEING "

(3)

) ;

1.5.

Enunciado

Listar los nombres de los pilotos que pueden solo vuelen aeronaves con rango de crucero mayor a 2000 millas y que esten cerficiados en al menos un avi´on Boeing.

SELECT DISTINCT e . eNombre FROM Empleado e ,

WHERE EXISTS( SELECT ∗

FROM C e r t i f i c a d o c2 , Aeronave a2

WHERE a2 . aID = c2 . aID AND e . eID = c2 . eID AND a2 . aNombre = " BOEING "

)

AND NOT EXISTS( SELECT ∗

FROM C e r t i f i c a d o c3 , Aeronave a3

WHERE a3 . aID = c3 . aID AND e . eID = c3 . eID AND a3 . r a n g o <= 2000

) ;

2.

Partes de aeronaves

2.1.

Esquemas

InfoParte(nroParte, nombreParte, subparteDe) UsadoEn(nroParte, tipoAvion, cantUsada) EnStock(nroParte, lugar, cantidad)

2.2.

Enunciado

Para cuales partes el total en stock es al menos la cantidad usada por un B737 y por que monto el total excede la cantidad usada

2.3.

Consulta

SELECT s . NroParte , s . Cantidad − e . CantUsada FROM EnStock s , UsadoEn e ,

WHERE ( s . NroParte = e . NroParte AND e . TipoAvion = " B737 "

(4)

3.

Estudiantes

3.1.

Esquemas

Estudiantes(eNro, eNomre, carrera, anioCursada, edad) Curso(cNombre, horario, aula, pID)

Cursa(eNro, cNombre)

Profesor(pID, pNombre, departamento)

3.2.

Enunciado

Hallar los nombres de los estudiantes que cursan el maximo numero de cursos.

3.3.

Consulta

SELECT e . eNombre

FROM E s t u d i a n t e s e , Cursa c WHERE e . eNro = c . eNro

GROUP BY e . eNro

HAVING COUNT( ∗ ) >= ALL ( SELECT COUNT( ∗ ) FROM Cursa c2 GROUP BY c2 . eNro ) ;

3.4.

Enunciado

Escribir una consulta SQL que permita, para cada valor de edad que aparece en Estudiante, hallar el valor de a˜no que aparece m´as frecuentemente. Por ejemplo, si hay m´as estudiantes de 20 a˜nos de edad en 2do a˜no que en cualquier otro a˜no para estudiantes de 20 a˜nos, listar el par (20,2do). Nota: No deben listarse duplicados y la consulta debe ser tan concisa como resulte posible.

3.5.

Consulta

SELECT DISTINCT e . edad , e . a n i o C u r s a d a FROM E s t u d i a n t e s e

GROUP BY e . edad , e . a n i o C u r s a d a HAVING COUNT( ∗ ) >= ALL (

SELECT COUNT( ∗ ) FROM E s t u d i a n t e s e2 WHERE e2 . edad = e1 . edad

GROUP BY e2 . a n i o C u r s a d a ) ;

(5)

3.6.

Enunciado

Hallar los nombres de todos los profesores que ense˜nan en todas las aulas en las que se dicta alg´un curso.

3.7.

Consulta

SELECT p . pNombre FROM P r o f e s o r p WHERE NOT EXISTS

( (SELECT Aula FROM Curso c1 WHERE NO EXISTS (SELECT ∗ FROM Curso c2

WHERE c1 . a u l a = c2 . a u l a AND c2 . pID = p . pID ) )

) ;

4.

Hip´

odromo

4.1.

Esquemas

Encuentros(nroEncuentro, fecha, nombreHipo)

Carreras(nroEncuentro, nroCarrera, tipoPista, estadoPista) Caballos(nombreCaballo, fechaNac, pelaje)

Corredores(nroEncuentro, nroCarrera, nombreCaballo, nroPosicion)

4.2.

Enunciado

Obtener los datos de aquellos caballos que hayan conseguido llegar a la meta en m´as de 3 oportunidades.

4.3.

Consulta

SELECT c . nombreCaballo , c . fechaNac , c . p e l a j e FROM C a b a l l o s c , C o r r e d o r e s c o r r

WHERE c . nombreCaballo = c o r . nombreCaballo AND c o r . n r o P o s i c i o n <= 3

GROUP BY c o r . nombreCaballo HAVING COUNT( ∗ ) > 3 ;

4.4.

Enunciado

Obtener la cantidad de veces que, en carreras de San Isidrio, hayan competido los caballos Matuk y Laca juntos.

(6)

4.5.

Consulta

SELECT COUNT( ∗ )

FROM C o r r e d o r e s c1 , C o r r e d o r e s c2

WHERE c1 . nombreCaballo = " Matuk " AND c2 . nombreCaballo = " Laca " AND c1 . n r o C a r r e r a = c2 . n r o C a r r e r a

AND c1 . n r o E n c u e n t r o = c2 . n r o E n c u e n t r o AND c1 . n r o E n c u e n t r o IN (

SELECT e . n r o E n c u e n t r o FROM E n c u e n t r o s e

WHERE e . nombreHipo = "San Isidrio " ) ;

5.

Apendice

5.1.

Valores Nulos

Las comparaciones en la presencia de valores nulos, devuelven uno de los 3 valores posibles: True, False y Unknown

Comparaci´on de un valor cualquiera con NULL, el resultado es Unknown.

Comparaci´on de dos valores NULL, el resultado es Unknown.

True OR Unknown evalua True

False OR Unknown evalua Unknown

True AND Unknown evalua Unknown

False AND Unknown evalua False

Operaci´on aritm´etica con un resultado NULL evalua NULL

Las funciones MAX, SUM y AVG ignoran los valores nulos, a menos que todos los valores de la columna involucrada sean nulos, en este ´ultimo caso el resultado es nulo.

La funci´on COUNT cuenta la cantidad de filas independientemente de su contenido; pero si la columna a la que se aplica COUNT solo contiene valores nulos, el resultado es cero. Si la columna contiene valores nulos, y otros valores, el resultado es la cantidad de valores ignorando los nulos.

Referencias

Documento similar

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

Este libro intenta aportar al lector una mirada cuestiona- dora al ambiente que se desarrolló en las redes sociales digitales en un escenario de guerra mediática mantenido por

o esperar la resolución expresa&#34; (artículo 94 de la Ley de procedimiento administrativo). Luego si opta por esperar la resolución expresa, todo queda supeditado a que se

Gastos derivados de la recaudación de los derechos económicos de la entidad local o de sus organis- mos autónomos cuando aquélla se efectúe por otras enti- dades locales o

Sabemos que, normalmente, las ​cookies deben ser almacenadas y enviadas de vuelta al servidor sin modificar; sin embargo existe la posibilidad de que un atacante

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

b) El Tribunal Constitucional se encuadra dentro de una organiza- ción jurídico constitucional que asume la supremacía de los dere- chos fundamentales y que reconoce la separación

Al hacer consultas a la base de datos, SQL permite utilizar operaciones algebraicas