Hola a tod@s. Hacía mucho que no escribía nada en mi blog y voy a aprovechar esta mañana de sabado para dejar mucho cópdigo DML (Data manipulation language).
Vamos a trabajar saobre el siguiente esquema:
OCUPA MUCHO PARA METERLO AQUI.. PINCHA AQUI
–1. Obtenga los tipos de avión, el doble de su envergadura y el cuadrado de su longitud para aquellos
–aviones con longitud menor que la media y que realizan vuelos con origen o destino en una
–ciudad que comience por la letra ‘M’, ordenándolos de mayor a menor envergadura.
–Para obtener la media de la longitud haremos:
SELECT AVG (LONGITUD) FROM AVIONES
–SOLUCIÓN:
SELECT DISTINCT TIPO,2*ENVERGADURA’DOBLE_ENVERG’,
–DISTINCT para que solo me muestre un tipo de avión
LONGITUD*LONGITUD’LONG_SQR’
FROM AVIONES,VUELOS
WHERE LONGITUD<(SELECT avg(LONGITUD) FROM AVIONES)
AND ORIGEN LIKE ‘M%’ OR DESTINO LIKE ‘M%’)
– Para solucionar este error:
– ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
ORDER BY 2*ENVERGADURA DESC — Es lo mismo
–SALIDA:
–tipo DOBLE_ENV LONG_SQR
———————————
–310 87.80 2177.1556
–AB2 68.20 1411.5049
–M87 65.80 1576.0900
–M80 65.72 2032.2064
–M88 65.72 2032.2064
–737 57.76 1115.5600
–D9S 56.84 1321.3225
–DC9 56.84 1321.3225
–73S 56.68 933.9136
–ATR 54.10 735.4944
–CS5 51.62 457.9600
———————————
–2. Obtenga las tres primeras letras de los orígenes y destinos de los vuelos realizados por aviones
–con longitud mayor que la media y envergadura menor que 2/3 la máxima envergadura,
–ordenados alfabéticamente por destino.
SELECT DISTINCT LEFT(ORIGEN,3),LEFT(DESTINO,3)
FROM VUELOS,AVIONES
WHERE ENVERGADURA<(((SELECT AVG(ALCANCE) FROM AVIONES))/2)*3
AND LONGITUD>(SELECT AVG(LONGITUD)FROM AVIONES)
AND TIPO_AVION=TIPO
ORDER BY LEFT(DESTINO,3) DESC
– Para las trés últimas letras sería:
SELECT DISTINCT RIGHT(ORIGEN,3),RIGHT(DESTINO,3)
FROM VUELOS,AVIONES
WHERE ENVERGADURA<(((SELECT AVG(ALCANCE) FROM AVIONES))/2)*3
AND LONGITUD>(SELECT AVG(LONGITUD)FROM AVIONES)
AND TIPO_AVION=TIPO
ORDER BY RIGHT(DESTINO,3) DESC
–3. Obtenga los dos primeros caracteres de los números de vuelo y el origen de los vuelos a los que
–corresponden partes con número de parte entre 400 y 450 y que recorren distancias mayores que
–la media, ordenándolos alfabéticamente por origen.
SELECT DISTINCT LEFT (V.NUM_VUELO,2)’2_CHAR_NV’,ORIGEN
FROM VUELOS V,PARTES P
WHERE NUM_PARTE BETWEEN 400 AND 450
AND V.NUM_VUELO=P.NUM_VUELO
AND DISTANCIA>(SELECT AVG(DISTANCIA) FROM VUELOS)
ORDER BY ORIGEN ASC
–SALIDA:
IB ALICANTE
AO ALMERIA
IB ALMERIA
AO AMSTERDAM
IB AMSTERDAM
IB BARCELONA
IB BILBAO
–4. Obtenga los números de vuelo, las tres primeras letras del origen y las tres primeras letras del
–destino para los vuelos realizados por aviones cuyo alcance sea mayor que la media de todos y
–con longitud menor que 2/3 la máxima longitud, ordenándolos por número de vuelo.
SELECT NUM_VUELO, LEFT(ORIGEN,3)’3_CHAR_ORI’,LEFT(DESTINO,3)’3_CHAR_DES’
FROM AVIONES,VUELOS
WHERE ALCANCE>(SELECT AVG(ALCANCE) FROM AVIONES)
AND AVIONES.TIPO=VUELOS.TIPO_AVION
AND LONGITUD<(((SELECT MAX(LONGITUD) FROM AVIONES))/2)*3
ORDER BY NUM_VUELO
–SALIDA:
AR1100 BUE AMS
AR1110 BUE MAD
AR1127 MAD BUE
AR1342 BUE CAN
AR1386 BUE BOG
AR941 BUE CAR
IB6620 LA MAD
IB6621 MAD LA
IB6840 BUE BAR
IB6842 BUE MAD
–5. Recupere todas las características de los aviones que nunca han pasado por Barcelona.
SELECT DISTINCT AVIONES.*
FROM AVIONES JOIN VUELOS
ON ORIGEN!=’BARCELONA’OR DESTINO !=’BARCELONA’
AND AVIONES.TIPO=VUELOS.TIPO_AVION
ORDER BY TIPO
–SALIDA:
310 Airbus 310 46.66 43.90 191 9400
32S Airbus todas las series 63.70 60.30 255 5000
340 Airbus 340 63.70 60.30 277 11500
727 Boeing 727 48.03 32.92 153 2400
737 Boeing 737 33.40 28.88 136 4000
73S Boeing 727-200 30.56 28.34 121 1700
747 Boeing 747 70.51 59.64 418 10000
74M Boeing 747 COMBI 70.51 59.64 280 10000
74S Boeing 747-200 70.51 59.63 410 10000
757 Boeing 757 47.32 38.05 200 3700
AB2 Airbus A320/200 37.57 34.10 147 3500
AB3 Airbus A300 53.57 44.84 256 3700
ATR ATR-72 27.12 27.05 68 1500
CS5 CASA CN-235 21.40 25.81 44 750
D10 McDonnell Douglas DC-10 55.35 50.39 268 9100
D9S McDonnell Douglas DC-9 Series 30 y 40 36.35 28.42 92 2750
DC9 McDonnell Douglas DC-9 36.35 28.42 92 2750
M80 McDonnell Douglas MD-80 45.08 32.86 165 4631
M87 McDonnell Douglas MD-87 39.70 32.90 109 2900
M88 McDonnell Douglas MD-88 45.08 32.86 155 2100
–6. Indique los tipos de avión, el doble de su longitud y su envergadura, para los aviones con
–envergadura mayor que la media y que realicen vuelos desde o hacia Madrid, ordenándolos de
–mayor a menor longitud.
SELECT DISTINCT TIPO,2*LONGITUD’LONG*2′, ENVERGADURA
FROM AVIONES JOIN VUELOS
ON ENVERGADURA>(SELECT AVG(ENVERGADURA)
FROM AVIONES)
AND ORIGEN!=’MADRID’ OR DESTINO!=’MADRID’ AND TIPO=TIPO_AVION
ORDER BY TIPO
–SALIDA:
310 93.32 43.90
32S 127.40 60.30
340 127.40 60.30
727 96.06 32.92
73S 61.12 28.34
747 141.02 59.64
74M 141.02 59.64
74S 141.02 59.63
757 94.64 38.05
AB3 107.14 44.84
ATR 54.24 27.05
CS5 42.80 25.81
D10 110.70 50.39
D9S 72.70 28.42
DC9 72.70 28.42
M80 90.16 32.86
M87 79.40 32.90
–7. Obtenga, para cada destino, la mayor distancia recorrida hacia él, por vuelos realizados por
–aviones con longitud mayor que la media, ordenados alfabéticamente.
–¿CUÁNTOS DESTINOS DISTINCOS HAY?
SELECT COUNT (DISTINCT DESTINO) FROM VUELOS
– HAY 28
SELECT DESTINO, MAX(DISTANCIA)’MAX_TO’
FROM VUELOS JOIN AVIONES
ON LONGITUD>(SELECT AVG(LONGITUD) FROM AVIONES)
GROUP BY DESTINO –PARA CADA DESTINO
ORDER BY DESTINO ASC
–SALIDA:
310 93.32 43.90
32S 127.40 60.30
340 127.40 60.30
727 96.06 32.92
73S 61.12 28.34
747 141.02 59.64
74M 141.02 59.64
74S 141.02 59.63
757 94.64 38.05
AB3 107.14 44.84
ATR 54.24 27.05
CS5 42.80 25.81
D10 110.70 50.39
D9S 72.70 28.42
DC9 72.70 28.42
M80 90.16 32.86
M87 79.40 32.90
–ME PREGUNTO… ¿CUÁNTOS ORÍGENES DISTINCOS HAY?
SELECT COUNT (DISTINCT ORIGEN) FROM VUELOS
– HAY 20
–8. Obtenga, para cada origen, la menor distancia recorrida desde él por vuelos realizados por
–aviones con menos butacas que la media, ordenados alfabéticamente.
SELECT ORIGEN,MIN(DISTANCIA)’DIST_CLOSER’
FROM VUELOS JOIN AVIONES
ON BUTACAS<(SELECT AVG(BUTACAS) FROM AVIONES)
GROUP BY ORIGEN –PARA CADA ORIGEN
ORDER BY ORIGEN ASC
–SALIDA:
310 93.32 43.90
32S 127.40 60.30
340 127.40 60.30
727 96.06 32.92
73S 61.12 28.34
747 141.02 59.64
74M 141.02 59.64
74S 141.02 59.63
757 94.64 38.05
AB3 107.14 44.84
ATR 54.24 27.05
CS5 42.80 25.81
D10 110.70 50.39
D9S 72.70 28.42
DC9 72.70 28.42
M80 90.16 32.86
M87 79.40 32.90
–9. Indique el total de plazas reservadas existentes para cada número de vuelo de Iberia.
SELECT NUM_VUELO,SUM(PLAZAS)’TOTAL_PLAZAS’ FROM RESERVAS R
WHERE NUM_VUELO LIKE ‘IB%’
GROUP BY NUM_VUELO — DE CADA NUMERO DE VUELO
–SALIDA
IB0103 255
IB0543 193
IB0554 70
IB0557 70
IB0845 420
IB1000 231
IB2614 408
–10. Indique a cuántos destinos diferentes se vuela desde cada uno de los orígenes, mostrando la
–salida ordenada de mayor a menor número de destinos.
SELECT ORIGEN, COUNT(DISTINCT DESTINO)’DESTINOS_POSIBLES’
FROM VUELOS
GROUP BY ORIGEN –DE CADA ORIGEN
ORDER BY ‘DESTINOS_POSIBLES’ DESC
–SALIDA:
ORIGEN DESTINOS_POSIBLES
————————————–
BARCELONA 10
MADRID 9
BUENOS AIRES 7
ALICANTE 6
BILBAO 5
GRAN CANARIA 5
ALMERIA 4
AMSTERDAM 3
TENERIFE 3
LA CORUÑA 2
FUERTEVENTURA 2
LISBOA 2
ROMA 2
SANTIAGO DE CHILE 1
SANTIAGO DE COMPOSTELA 1
SEVILLA 1
PALMA MALLORCA 1
PARIS 1
LA HABANA 1
CASABLANCA 1
–11. Indique cuántos tipos de aviones diferentes salen de cada origen de la tabla vuelos, mostrando la
–salida ordenada de mayor a menor número de aviones. Sólo nos interesan aquellos orígenes de
–los que salen más de tres tipos de aviones diferentes.
SELECT ORIGEN, COUNT(TIPO_AVION)’NUM_AVIONES’, COUNT (DISTINCT TIPO_AVION)’TIPOS_DISTINTOS’
FROM VUELOS
GROUP BY ORIGEN –DE CADA ORIGEN QUE
HAVING COUNT(DISTINCT TIPO_AVION)>3 — TENGA MAS DE TRES TIPOS DE AVIÓN
ORDER BY ‘NUM_AVIONES’ DESC
–SALIDA:
ORIGEN NUM_AVIONES TIPOS_DISTINTOS
BARCELONA 23 6
MADRID 19 8
ALICANTE 14 4
BILBAO 9 4
BUENOS AIRES 9 5
GRAN CANARIA 9 4
ALMERIA 6 4
– SE PODRÍA HABER INTERPRETADO ORDENADO DE MAYOR A MENOR NUMERO DE TIPO DE AVIONES DISTINTOS
SELECT ORIGEN, COUNT (DISTINCT TIPO_AVION)’TIPOS_DISTINTOS’
FROM VUELOS
GROUP BY ORIGEN –DE CADA ORIGEN QUE
HAVING COUNT(DISTINCT TIPO_AVION)>3 — TENGA MAS DE TRES TIPOS DE AVIÓN
ORDER BY ‘TIPOS_DISTINTOS’ DESC
– SALIDA:
ORIGEN TIPOS_DISTINTOS
MADRID 8
BARCELONA 6
BUENOS AIRES 5
GRAN CANARIA 4
BILBAO 4
ALICANTE 4
ALMERIA 4
–12. ¿Cuántas horas de salida diferentes hay para cada tramo (origen – destino) de la tabla vuelos?
SELECT ORIGEN,DESTINO, COUNT(DISTINCT HORA_SALIDA)’HORAS_DE_SALIDA’
FROM VUELOS
GROUP BY ORIGEN, DESTINO–PARA CADA TRAMO
ORDER BY ‘HORAS_DE_SALIDA’ DESC
–SALIDA:
BARCELONA MADRID 6
MADRID BARCELONA 5
ALICANTE BARCELONA 4
ALICANTE AMSTERDAM 3
BILBAO MADRID 3
PARIS MADRID 3
BARCELONA MALAGA 3
SANTIAGO DE COMPOSTELA MADRID 3
BARCELONA SANTIAGO DE COMPOSTELA 3
MADRID SANTIAGO DE COMPOSTELA 2
BARCELONA SEVILLA 2
FUERTEVENTURA TENERIFE 2
GRAN CANARIA TENERIFE 2
SEVILLA MADRID 2
MADRID PARIS 2
MADRID ROMA 2
ROMA MADRID 2
AMSTERDAM MADRID 2
PALMA MALLORCA MADRID 2
BUENOS AIRES MADRID 2
GRAN CANARIA MADRID 2
GRAN CANARIA LANZAROTE 2
MADRID LISBOA 2
ALICANTE MADRID 2
BILBAO AMSTERDAM 2
BUENOS AIRES AMSTERDAM 2
AMSTERDAM ALICANTE 2
BARCELONA ALICANTE 2
ROMA BARCELONA 2
BILBAO BARCELONA 2
BARCELONA BILBAO 2
SANTIAGO DE CHILE BUENOS AIRES 2
GRAN CANARIA FUERTEVENTURA 2
FUERTEVENTURA GRAN CANARIA 2
TENERIFE GRAN CANARIA 2
BARCELONA LA CORUÑA 2
MADRID LA CORUÑA 2
MADRID LA HABANA 1
BARCELONA LANZAROTE 1
BUENOS AIRES LA CORUÑA 1
BARCELONA HANOVER 1
GRAN CANARIA HIERRO 1
TENERIFE HIERRO 1
LISBOA GRAN CANARIA 1
ALICANTE GRAN CANARIA 1
BUENOS AIRES CANCUN 1
BUENOS AIRES CARACAS 1
MADRID CASABLANCA 1
BUENOS AIRES BOGOTA 1
MADRID BUENOS AIRES 1
BUENOS AIRES BARCELONA 1
LA CORUÑA BARCELONA 1
ALICANTE BERLIN 1
ALICANTE BILBAO 1
BILBAO ALICANTE 1
AMSTERDAM ALMERIA 1
BARCELONA ALMERIA 1
ALMERIA BARCELONA 1
ALMERIA MADRID 1
ALMERIA LONDRES 1
LA CORUÑA MADRID 1
LA HABANA MADRID 1
LISBOA MADRID 1
BILBAO MALAGA 1
ALMERIA MELILLA 1
CASABLANCA PARIS 1
TENERIFE MADRID 1
–13. Obtenga, para cada número de vuelo, el total de plazas reservadas de los vuelos que recorren
–distancias mayores que la media de las distancias recorridas por vuelos de la misma compañía.
–Sólo nos interesan aquellos vuelos en los que el total de plazas reservadas es mayor que la media
–de plazas reservadas para los vuelos de Iberia.
–POR PARTES ..
– número de vuelo y total de plazas reservadas…
SELECT R.NUM_VUELO,SUM(R.PLAZAS)’TOTAL_PLAZAS_RESERVADAS’
FROM RESERVAS R, VUELOS V
WHERE R.NUM_VUELO=V.NUM_VUELO
GROUP BY R.NUM_VUELO
–SALIDA 1:
VUELO TOTAL_PLAZAS_RESERVADAS
IB0103 255
IB0543 193
IB0554 70
IB0557 70
IB0845 420
IB1000 231
IB2614 408
–mayores que la media de las distancias recorridas por vuelos de la misma compañía.
–LA MEDIA DE LAS DISTANCIAS RECORRIDAS ES:
SELECT AVG(DISTANCIA) FROM VUELOS = 995
SELECT R.NUM_VUELO,SUM(R.PLAZAS)’TOTAL_PLAZAS_RESERVADAS’, AVG(DISTANCIA)
FROM RESERVAS R, VUELOS V
WHERE R.NUM_VUELO=V.NUM_VUELO
AND V.DISTANCIA>(SELECT AVG(DISTANCIA) FROM VUELOS)
GROUP BY R.NUM_VUELO
AND R.NUM_VUELO=A.TIPO
GROUP BY R.NUM_VUELO
—me estoy volviendo 1OcO!…… ESTE DE MOMENTO NO ME SALE
SELECT R.NUM_VUELO, SUM(PLAZAS)
FROM RESERVAS R, VUELOS V
WHERE V.NUM_VUELO=R.NUM_VUELO
AND DISTANCIA >(SELECT AVG(DISTANCIA) FROM VUELOS
WHERE LEFT (VUELOS.NUM_VUELO,2)=LEFT (V.NUM_VUELO,2))
GROUP BY R.NUM_VUELO
HAVING SUM(PLAZAS)>(SELECT AVG(PLAZAS)FROM RESERVAS
WHERE LEFT (NUM_VUELO,2)= ‘IB’);
–14. Obtenga la hora de salida más temprana para cada uno de los orígenes de los vuelos realizados
–por aviones con un alcance menor que 2/3 de la media del alcance de los otros aviones.
SELECT ORIGEN, MIN( HORA_SALIDA)’HORA_MAS_TEMPRANA’
FROM VUELOS JOIN AVIONES A
ON ALCANCE<(((SELECT AVG(ALCANCE) FROM AVIONES))/2)*3
GROUP BY ORIGEN — CADA ORIGEN
–SALIDA:
ALICANTE 1900-01-01 07:35:00.000
ALMERIA 1900-01-01 09:25:00.000
AMSTERDAM 1900-01-01 11:20:00.000
BARCELONA 1900-01-01 07:35:00.000
BILBAO 1900-01-01 07:45:00.000
BUENOS AIRES 1900-01-01 08:50:00.000
CASABLANCA 1900-01-01 15:05:00.000
FUERTEVENTURA 1900-01-01 08:45:00.000
GRAN CANARIA 1900-01-01 06:50:00.000
LA CORUÑA 1900-01-01 09:35:00.000
LA HABANA 1900-01-01 17:35:00.000
LISBOA 1900-01-01 09:05:00.000
MADRID 1900-01-01 07:50:00.000
PALMA MALLORCA 1900-01-01 07:50:00.000
PARIS 1900-01-01 07:05:00.000
ROMA 1900-01-01 08:25:00.000
SANTIAGO DE CHILE 1900-01-01 07:00:00.000
SANTIAGO DE COMPOSTELA 1900-01-01 07:10:00.000
SEVILLA 1900-01-01 07:30:00.000
TENERIFE 1900-01-01 08:00:00.000
–15. Obtenga los números de parte de los partes que corresponden a vuelos que recorren una
–distancia mayor que la media de la distancia de los otros vuelos.
SELECT DISTINCT NUM_PARTE
FROM PARTES JOIN VUELOS
ON DISTANCIA>(SELECT AVG(DISTANCIA) FROM VUELOS)
–SALIDA: 125 NUMEROS DE PARTE
–CURIOSIDAD: ¿CUÁNTO SUMAN TODOS?
SELECT SUM (DISTINCT NUM_PARTE)
FROM PARTES JOIN VUELOS
ON DISTANCIA>(SELECT AVG(DISTANCIA) FROM VUELOS)
–SALIDA: 56936
–CURIOSIDAD 2 : ¿CUÁL ES LA MEDIA?
SELECT AVG (DISTINCT NUM_PARTE)
FROM PARTES JOIN VUELOS
ON DISTANCIA>(SELECT AVG(DISTANCIA) FROM VUELOS)
–SALIDA: 455
–CURIOSIDAD 3: SEGÚN LA CALCULADORA N*MEDIA = 455*125= 56875
SELECT (AVG (DISTINCT NUM_PARTE)*COUNT(DISTINCT NUM_PARTE))
FROM PARTES JOIN VUELOS
ON DISTANCIA>(SELECT AVG(DISTANCIA) FROM VUELOS)
–SALIDA: 56875
–16. Obtenga el número de butacas de aquellos aviones con más butacas que la media de los otros
–aviones y envergadura menor que la media de las diferentes envergaduras de los otros aviones.
SELECT BUTACAS
FROM AVIONES
WHERE BUTACAS>(SELECT AVG(BUTACAS)FROM AVIONES)
AND ENVERGADURA<(SELECT AVG (ENVERGADURA) FROM AVIONES)
–SALIDA:
200
–17. Obtenga la longitud de aquellos aviones con longitud menor que la media de los otros aviones y
–capacidad mayor que la media de las diferentes capacidades de los otros aviones.
SELECT LONGITUD
FROM AVIONES
WHERE LONGITUD<(SELECT AVG(LONGITUD) FROM AVIONES )
AND BUTACAS>(SELECT AVG(BUTACAS) FROM AVIONES)
–SALIDA: NADA PROBEMOS A INVERTIR LAS CONDICIONES
SELECT LONGITUD
FROM AVIONES
WHERE LONGITUD>(SELECT AVG(LONGITUD) FROM AVIONES )
AND BUTACAS<(SELECT AVG(BUTACAS) FROM AVIONES)
–SALIDA:
48,03
–18. Obtenga la longitud de los aviones que realizan vuelos que recorren distancias mayores que la
–media de las distancias de los vuelos recorridos por la misma compañía.
SELECT DISTINCT LONGITUD
FROM AVIONES,VUELOS,COMPANIAS
WHERE DISTANCIA>(SELECT AVG(DISTANCIA) FROM VUELOS)
AND LEFT (NUM_VUELO,2)=CODE
–SALIDA:
21.40
27.12
30.56
33.40
36.35
37.57
39.70
45.08
46.66
47.32
48.03
53.57
55.35
63.70
70.51
–19. Saliendo en el primer vuelo Sevilla – Madrid, averigüe la hora de salida del primer vuelo que se
–puede coger en Madrid con destino a Barcelona.
–HORARIOS DE LLEGADA A MADRID DESDE EL PRIMER VUELO DESDE SEVILLA
SELECT MIN (HORA_LLEGADA)
FROM VUELOS
WHERE ORIGEN=’SEVILLA’
AND DESTINO=’MADRID’
–SALIDA: EL PRIMER AVION LLEGA A MADRID A LAS 08:25:00.000
–HORARIOS DESDE MADRID HACIA BARCELONA
SELECT HORA_SALIDA
FROM VUELOS
WHERE ORIGEN=’MADRID’
AND DESTINO=’BARCELONA’
ORDER BY HORA_SALIDA
–TODO JUNTO
SELECT MIN (HORA_SALIDA)
FROM VUELOS
WHERE ORIGEN=’MADRID’
AND DESTINO=’BARCELONA’
AND (HORA_SALIDA>(SELECT MIN (HORA_LLEGADA)
FROM VUELOS
WHERE ORIGEN=’SEVILLA’
AND DESTINO=’MADRID’))
–SALIDA: EL VUELO DE LAS 10:00:00.000, ¡¡¡TODO CONCUERDA!!!
–20. Obtenga el total de plazas reservadas para vuelos de Iberia cada día entre cada dos ciudades,
–ordenados de mayor a menor número de plazas reservadas.
SELECT ORIGEN,DESTINO , SUM(PLAZAS) ‘TOTAL_PLAZAS’
FROM RESERVAS R, VUELOS V
WHERE R.NUM_VUELO=V.NUM_VUELO
AND LEFT (V.NUM_VUELO,2)=’IB’
GROUP BY ORIGEN,DESTINO
ORDER BY ‘TOTAL_PLAZAS’ DESC
–SALIDA:
SEVILLA MADRID 255
MADRID BARCELONA 231
BARCELONA MADRID 227
MADRID BARCELONA 215
BARCELONA MADRID 193
MADRID BARCELONA 193
SANTIAGO DE COMPOSTELA MADRID 120
SANTIAGO DE COMPOSTELA MADRID 73
MADRID SANTIAGO DE COMPOSTELA 70
SANTIAGO DE COMPOSTELA MADRID 70
– OBSERVACIÓN: PERO SOLO QUIERO NÚMEROS DE VUELO
– LO QUIERO RELACIONADO CON NUM_VUELO
– USANDO JOIN…
SELECT V.NUM_VUELO, SUM(PLAZAS) ‘TOTAL_PLAZAS’
FROM RESERVAS R , VUELOS V
WHERE R.NUM_VUELO=V.NUM_VUELO
AND LEFT (V.NUM_VUELO,2)=’IB’
GROUP BY V.NUM_VUELO
ORDER BY ‘TOTAL_PLAZAS’ DESC
–SALIDA:
IB0845 420
IB2614 408
IB0103 255
IB1000 231
IB0543 193
IB0554 70
IB0557 70
–21. Obtenga los diferentes recorridos que se pueden realizar desde una ciudad hasta Madrid y
–haciendo escala llegar a otra ciudad.
SELECT DISTINCT V1.ORIGEN ‘DESDE’,
V1.DESTINO ‘PASANADO POR’,
V2.DESTINO ‘HASTA’
FROM VUELOS V1, VUELOS V2
WHERE V1.DESTINO=’MADRID’
AND V2.ORIGEN=’MADRID’
–SALIDA: 144 POSIBILIDADES…
–DESDE:
–ALICANTE MADRID BARCELONA
–HASTA:
–TENERIFE MADRID SANTIAGO DE COMPOSTELA
–22. Obtenga, en una sola columna, los nombres de todas las ciudades que aparecen en la tabla de
–vuelos, ordenados alfabéticamente.
SELECT ORIGEN ‘CIUDADES CON AEROPUERTO’
FROM VUELOS
UNION
SELECT DESTINO
FROM VUELOS
ORDER BY ORIGEN
– SALIDA: LAS 30 CIUDADES
–23. Obtenga en una sola columna el nombre de todas las ciudades origen de un vuelo y el de las que
–son destino de un vuelo. (Una misma ciudad puede aparecer como origen y como destino.)
SELECT DISTINCT ORIGEN
FROM VUELOS
UNION ALL –¿SE REFIERE A ESTO?
SELECT DISTINCT DESTINO
FROM VUELOS
–24. Obtenga en dos columnas, para cada ciudad que es origen, el número de vuelos que salen de ella
–y luego para cada una que es destino, el número de vuelos que recibe.
SELECT DISTINCT ORIGEN AS CIUDAD, COUNT(DESTINO) ‘NUM_VUELOS’
FROM VUELOS GROUP BY ORIGEN
UNION ALL
SELECT DISTINCT DESTINO AS CIUDAD,COUNT(ORIGEN) ‘NUM_VUELOS’
FROM VUELOS GROUP BY DESTINO
–25. Obtenga en tres columnas, para cada ciudad que aparece en la tabla vuelos, su nombre ordenado
–alfabéticamente, el total de vuelos que parten de ella y el total de vuelos que llegan a ella. Si no
–llega o no parte ningún vuelo, debe aparecer cero en la columna correspondiente.
SELECT DISTINCT ORIGEN, COUNT(DESTINO),ORIGEN=0
FROM VUELOS GROUP BY ORIGEN
UNION
SELECT DISTINCT DESTINO, DESTINO=0, COUNT(ORIGEN)
FROM VUELOS GROUP BY DESTINO
–26. Obtenga en dos columnas, las diferentes fechas de llegada reflejadas en los partes de vuelo con el
–menor combustible consumido en cada una de ellas y, a continuación, estas mismas fechas con el
–mayor combustible consumido en cada una de ellas.
SELECT FECHA, MIN(COMB_CONSUMIDO) ‘COMBUSTIBLE_CONSUMIDO’
FROM PARTES
GROUP BY FECHA
UNION ALL
SELECT FECHA,MAX(COMB_CONSUMIDO)
FROM PARTES
GROUP BY FECHA
Archivado bajo: BBDD, Informática, Ingeniería Informática, Oracle, Programación, SQL