Ya llegamos al final del trabajo sólo no resta el código de las consultas y las pijadas de la maquetación que, para variar, dejaré en manos de Latex JEJEJE ¡Ohhh, poderoso amigo latex, trabaja tú por mi!
Pero antes las consultas, no están en un orden determinado ni nada por el estilo. Simplemente se exponen según se me fueron ocurriendo.
- Saber en que escudería ha estado un piloto, por ejemplo Alonso.
FROM I_TIENEN_2
WHERE (I_TIENEN_2.pil_apellido= 'Alonso')
- Saber cuantas veces ha quedado un piloto en primer puesto junto con la fecha del GP su temporada y en que circuitos. Por ejemplo Felipe Massa.
FROM I_POSICION, GPs
WHERE (I_POSICION.llegada='1' AND I_POSICION.pil_apellido='Massa'AND GPs.fecha_mundial=I_POSICION.fecha_mundial)
- Listar que pilotos han ganado los GP´s en esta temporada (2007)
FROM I_POSICION
WHERE I_POSICION.llegada='1'
AND (SELECT EXTRACT(YEAR FROM I_POSICION.fecha_mundial))='2007'
GROUP BY pil_apellido, pil_nombre
- ¿Qué pilotos Oficiales han nacido antes de 1980? Es decir que pilotos en activo y oficiales tienen más de 27 años.
FROM pilotos
WHERE (SELECT EXTRACT(YEAR FROM pilotos.nacimiento))<='1980' AND pilotos.estatus= 'O'
- ¿Cuántas veces se ha corrido en Indianápolis, en qué fecha y temporada?
SELECT COUNT(*) AS "Numero de carreras en circuito solicitado"
FROM gps
WHERE gps.cir_nombre= 'Indianapolis'
Y esta me da las fechas y las temporadas
SELECT gps.fecha_mundial AS "Fecha en el Mundial", temporada AS "Temporada"
FROM gps
WHERE gps.cir_nombre= 'Indianapolis'
ORDER BY "Temporada" ASC
6. ¿Qué curvas del mundial se toman a más de 250 km/h?
SELECT cir_nombre AS "Circuito",n_curva AS "Numero de curva", nombre_propio AS "Nombre propio"
FROM curvas
WHERE curvas.velocidad > '250'
ORDER BY cir_nombre ASC
FROM trazado
WHERE (trazado.temporada='2007' OR trazado.temporada='06/07')
AND (trazado.velocidad_max = (SELECT MAX(trazado.velocidad_max) FROM trazado))
SELECT trazado.cir_nombre, trazado.n_vueltas, trazado.longitud AS "Longitud Vuelta (m)", ((trazado.longitud * trazado.n_vueltas)/1000)::NUMERIC(6,3) AS "Longitud GP (km)", trazado.temporada
FROM trazado;
NOTA: Notar que en esta consulta se hace un cambio de unidades.
CREATE VIEW auxiliar_clasificacion AS
SELECT pil_apellido,pil_nombre,llegada,
CASE WHEN llegada=1 THEN 10
WHEN llegada=2 THEN 8
WHEN llegada=3 THEN 6
WHEN llegada=4 THEN 5
WHEN llegada=5 THEN 4
WHEN llegada=6 THEN 3
WHEN llegada=7 THEN 2
WHEN llegada=8 THEN 1
ELSE 0
END AS "puntuacion",gp_nombre
FROM i_posicion
WHERE (SELECT EXTRACT(YEAR FROM I_POSICION.fecha_mundial))='2007'
ORDER BY pil_apellido, pil_nombre;
--Código de la consulta
SELECT pil_nombre,pil_apellido, SUM(puntuacion) AS "Puntos del Campeonato"
FROM auxiliar_clasificacion
GROUP BY pil_apellido, pil_nombre
ORDER BY "Puntos del Campeonato" DESC
CREATE VIEW aux_esc_clasificacion3 AS
SELECT esc_nombre, pil_apellido, pil_nombre, auxiliar_clasificacion.puntuacion
FROM I_TIENEN_2
WHERE (I_TIENEN_2.pil_nombre= auxiliar_clasificacion.pil_nombre) AND
(I_TIENEN_2.pil_apellido = auxiliar_clasificacion.pil_apellido);
--Código de la consulta
SELECT esc_nombre, SUM (puntuacion) AS "Puntos del Campeonato"
FROM aux_esc_clasificacion3
GROUP BY esc_nombre
ORDER BY "Puntos del Campeonato" DESC
FROM circuitos
WHERE circuitos.aforo=(SELECT MAX(circuitos.aforo)FROM circuitos)
SELECT circuitos.cir_nombre, circuitos.aforo
FROM circuitos
WHERE circuitos.aforo=(SELECT MIN(circuitos.aforo)FROM circuitos)
FROM I_POSICION
WHERE (parrilla = '1') AND (pil_apellido= 'Hamilton')
GROUP BY pil_apellido, pil_nombre --Esto es necesario según indica el SGBD
13. ¿Qué monoplaza es el más corto de la temporada? ¿Y el de mayor batalla?
SELECT mono_nombre AS "Monoplaza", (longitud/1000)::NUMERIC(5,1) AS "Longitud (m)"
FROM monoplazas
WHERE longitud=(SELECT MIN(longitud)FROM monoplazas)SELECT mono_nombre AS "Monoplaza", (batalla/1000)::NUMERIC(5,3) AS "Batalla (m)"
FROM monoplazas
WHERE batalla=(SELECT MAX(batalla)FROM monoplazas)
FROM I_TIENEN_3
WHERE patro_nombre=’ING’
FROM I_TIENEN_3
WHERE patro_nombre LIKE 'Bri%g%e'
GROUP BY patro_nombre
FROM I_TIENEN_3
WHERE patro_nombre LIKE 'C%e%'
GROUP BY patro_nombre
ORDER BY patro_nombre ASC
FROM trazado
WHERE consumo= (SELECT MAX(consumo)FROM trazado )
CREATE VIEW auxiliar_media AS
SELECT pil_apellido,pil_nombre,parrilla, llegada
FROM i_posicion
WHERE (SELECT EXTRACT(YEAR FROM I_POSICION.fecha_mundial))='2007'
ORDER BY pil_apellido, pil_nombre;
--Creación de la consulta
SELECT pil_apellido AS "Apellido", pil_nombre AS "Nombre", AVG(parrilla)::NUMERIC(3,0) AS "Media en Parrilla", AVG(llegada)::NUMERIC(3,0) AS "Media de Llegada"
FROM auxiliar_media
GROUP BY pil_apellido, pil_nombre
ORDER BY AVG(parrilla) ASC
0 comentarios:
Publicar un comentario