
---1) Listar los identificadores de todos los aviones que pueden ser usados en vuelos 
---   directos desde Bonn hacia Madrid.

SELECT 	idAvion
FROM	Avion, Vuelo
WHERE 	origen="Bonn" AND
	destino="Madrid" AND
	distanciaVuelo > distancia

/******************************************************************************************/

---2) Listar el nombre de los pilotos certificados para algún avión Boeing.

SELECT 	nombreEmpleado
FROM 	(Avion as A  JOIN Certificado as C ON A.idAvion=C.idAvion) 
		JOIN Empleado as E ON C.idEmpleado=E.idEmpleado
WHERE 	A.nombreAvion="Boeing"

/******************************************************************************************/

---3) Mostrar cuántos pilotos con salario menor a 5,000 están certificados para volar 
---   cada marca de avión.

SELECT 	marcaAvion, COUNT(idEmpleado)
FROM 	(Avion as A JOIN Certificado as C ON A.idAvion=C.idAvion) 
		JOIN Empleado as E ON C.idEmpleado=E.idEmpleado
WHERE	salario < 5000	
GROUP BY marcaAvion

/******************************************************************************************/

---4) Mostrar las ciudades de conexión, considerando una única escala, de todos los vuelos entre 
---   Santiago y Barcelona con pasaje menor a 2,000 y tiempo de espera máximo de 5 horas.

SELECT  V1.destino 
FROM	Vuelo as V1, Vuelo as V2
WHERE	V1.origen="Santiago" AND
	V2.destino="Barcelona" AND
	V1.destino=V2.origen AND
	V1.precio+V2.precio<=2000 AND
	V2.horaSalida-V1.horaLlegada<="05:00:00"

/******************************************************************************************/

---5) Mostrar las rutas para las que existen más de tres marcas de avión disponibles.

SELECT 	origen, destino
FROM 	Vuelo, Avion
WHERE 	distanciaVuelo>distancia
GROUP BY COUNT(marcaAvion)
HAVING COUNT(marcaAvion)>3

/******************************************************************************************/

---6) Listar los números de vuelo que pueden ser piloteados por algún piloto cuyo salario 
---   es mayor que 5,000.

SELECT	nroVuelo
FROM	(Certificado as C JOIN Empleado as E ON C.idEmpleado=E.idEmpleado)
		JOIN Avion as A ON C.idAvion=A.idAvion, Vuelo
WHERE 	salario>5,000 AND
	distancia <= distanciaVuelo

/******************************************************************************************/

---7) Mostrar la ruta cuyo precio de pasaje es el más barato.

SELECT 	origen, destino
FROM 	Vuelo
wHERE 	precio=(SELECT MIN(precio) 
                FROM Vuelo)

/******************************************************************************************/
 
---8) Mostrar el nombre y el salario de todos los empleados que no son pilotos.

SELECT 	nombreEmpleado, salario
FROM	Empleado 
WHERE	idEmpleado NOT IN (SELECT idEmpleado 
			   FROM Certificado)

/******************************************************************************************/

---9) Mostrar los nombres de los pilotos cuyo salario es menor que el precio de la ruta 
---   más barata desde Los Ángeles hasta Honolulu.

SELECT 	nombreEmpleado 
FROM	Empleado as E JOIN Certificado as C ON E.idEmpleado=C.idEmpleado
WHERE 	salario<(SELECT MIN(precio)
		 FROM Vuelo 
		 WHERE origen="Los Angeles"  AND
		       destino= "Honolulu")

/******************************************************************************************/

---10) Mostrar los nombres de los pilotos que pueden operar aviones con una distancia de 
---    vuelo mayor a 3,000 millas pero que no son certificados en ningún avión Boeing.

SELECT 	idEmpleado
FROM 	Certificado as C JOIN Avion as A ON C.idAvion=A.idAvion
WHERE 	distanciaVuelo>3000 AND
	idEmpleado NOT IN (SELECT idEmpleado
			   FROM Certificado as C JOIN Avion as A ON C.idAvion=A.idAvion 
			   WHERE marcaAvion="Boeing")

/******************************************************************************************/

---11) Mostrar el código del empleado con el segundo sueldo más alto.

SELECT  idEmpleado
FROM	Empleado
WHERE	salario=(SELECT MAX(salario) 
		 FROM Empleado 
		 WHERE salario<>(SELECT MAX(salario) 
                                 FROM Empleado))	

/******************************************************************************************/

---12) Para cada marca de avión, mostrar cuántos pilotos ganan más que el salario 
---    promedio de los pilotos.

SELECT 	marcaAvion, COUNT(idEmpleado)
FROM 	(Avion as A JOIN Certificado as C ON A.idAvion=C.idAvion) 
		JOIN Empleado as E ON C.idEmpleado=E.idEmpleado
WHERE	salario > (SELECT AVG(salario) 
                   FROM Certificado as C JOIN Empleado as E ON C.idEmpleado=E.idEmpleado)	
GROUP BY marcaAvion
 	
 	 
		

