Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Base de datos
1
Base de datos
Ejercicio 9
Índice
Página: 2/13
Base de datos
Ejercicio 9
SELECT *
FROM Sanciones CROSS JOIN Conductores;
SELECT *
FROM Conductores CROSS JOIN Conductores AS Conductores_2;
2.- Consulta que nos muestre el nombre del policía, apellidos del policía, identificación del
vehículo, fecha y Sanción de las multas que han puesto los policías, cuyo primer apellido
comienza por las letras comprendidas entre las letras “A” y “F”.
357 filas.
Página: 3/13
Base de datos
Ejercicio 9
2.1.- Hacer la misma combinación anterior pero de forma que aparezcan todos los registros
de la tabla policía hayan puesto multa o no.
358 filas.
SELECT *
FROM Policias AS P LEFT JOIN Sanciones AS S ON p.id_policia=s.id_policia
WHERE p.Apellidos LIKE '[a-f]%';
3.- Consulta que nos muestre de la tabla sanciones, los campos del id_vehiculo y la sanción
impuesta y de la tabla vehículos la matrícula del vehículo, el id_propietario y el precio del
vehículo. Poner primero la tabla Sanciones y luego la tabla Vehículos y usar la opción
RIGHT JOIN.
1012 filas.
Página: 4/13
Base de datos
Ejercicio 9
SELECT
sanciones.id_vehiculo,sanciones.sancion,vehiculos.matricula,vehiculos.id_propietario,vehicu
los.precio
FROM sanciones RIGHT JOIN vehiculos ON sanciones.id_vehiculo = vehiculos.id_vehiculo
3.1.- Si intercambiamos las tablas ¿por qué se muestran menos filas en el resultado?
La consulta con las tablas intercambiadas muestra menos filas porque solo devuelve los
registros de la tabla vehiculos que tienen un registro correspondiente en la tabla sanciones.
4.- Consulta que nos muestre el nombre y los apellidos de los conductores en una misma
columna y en otra campo el nombre del país, de aquellos registros cuyo nombre de país
comience por la letra "A" o por la "B". Hacer que en el resultado aparezcan todos los
nombres de los países que comienzan por esas letras tengan o no conductores asociados.
471 filas.
Página: 5/13
Base de datos
Ejercicio 9
5.1.- En una consulta indicar ¿cuántos valores distintos de multas se han puesto en total?
Por ejemplo, si tenemos sanciones por valor de 30, 45, 30, 56, 23, 45, 30. El resultado seria
4 importes de multas distintos.
476 SANCIONES.
Página: 6/13
Base de datos
Ejercicio 9
6.- Consulta en la que se nos muestre el valor más alto que se ha puesto de una multa, el
valor más pequeño, la suma total de dinero recaudado y el valor medio de multa que se ha
puesto a todos los conductores cuyo nombre de país de procedencia no comienza por las
letras “A” , "B" o la “P”.
SELECT
MAX(Sancion) AS multa_mas_alta,
MIN(Sancion) AS multa_mas_baja,
SUM(Sancion) AS recaudado_total,
AVG(Sancion) AS multa_media
FROM dbo.Conductores
INNER JOIN dbo.Paises ON dbo.Conductores.id_pais = dbo.Paises.id_pais
INNER JOIN dbo.Vehiculos ON dbo.Conductores.id_conductor =
dbo.Vehiculos.id_propietario
INNER JOIN dbo.Sanciones ON dbo.Vehiculos.id_vehiculo = dbo.Sanciones.id_vehiculo
WHERE Paises.pais NOT LIKE 'A%'
AND Paises.pais NOT LIKE 'B%'
AND Paises.pais NOT LIKE 'P%';
7.- Consulta en la que se nos muestre el nombre y apellidos de los policías, juntos en una
misma columna y en la otra columna la suma total de las sanciones que le han puesto,
ordenadas en orden descendente de la suma de las sanciones.
Página: 7/13
Base de datos
Ejercicio 9
7.1.- ¿Se podría usar LEFT o RIGHT en el JOIN en la consulta anterior? ¿Qué diferencia
habría entre las dos?
Página: 8/13
Base de datos
Ejercicio 9
8.- Consulta en la que se nos muestre los distintos modelos de los vehículos que tenemos
en la base de datos y luego una columna con la suma de las sanciones impuestas a ese
modelo, otra columna con la sanción máxima de las sanciones que han tenido cada
modelo, y otra con la sanción mínima. Ordenados en orden descendente de la suma de las
sanciones.
SELECT Modelos.modelo,SUM(sanciones.Sancion) AS
suma_sanciones,MAX(sanciones.Sancion) AS multa_maxima,MIN(sanciones.Sancion) AS
multa_minima
FROM dbo.Vehiculos INNER JOIN dbo.Sanciones ON dbo.Vehiculos.id_vehiculo =
dbo.Sanciones.id_vehiculo INNER JOIN dbo.Modelos ON dbo.Vehiculos.id_modelo =
dbo.Modelos.id_modelo
GROUP BY
Modelos.modelo
ORDER BY
suma_sanciones DESC
9.- Consulta en la que se nos muestre de cada modelo y categoría la media total de
sanciones que ha tenido. Y que solamente se nos muestren los datos de aquellas en las
que la media es superior a 300 euros.
Utiliza la función CAST para mostrar la media con dos decimales.
17 filas.
Página: 9/13
Base de datos
Ejercicio 9
10.- Consulta en la que se nos muestre agrupados por el nombre del mes la suma total de
sanciones que se han puesto por cada mes. Ordenados alfabéticamente por el nombre del
mes. Y que se nos muestren sólo los meses cuya suma de sanciones son superiores a
20000 euros.
10 filas.
Página: 10/13
Base de datos
Ejercicio 9
10.1.- Modificar la consulta anterior para que nos muestre el mismo resultado pero
ordenado por los meses pero de la forma que vienen ordenados en los años naturales:
enero, febrero, marzo….. ¿que solución podría buscar?
Página: 11/13
Base de datos
Ejercicio 9
11.- Consulta en la que se nos muestre agrupados por el número de año la media de
sanciones de cada año y que sólo se nos muestren los años en los que la media de las
sanciones es superior a 305 euros. Ordenar el resultado por número de año en orden
ascendente.
4 filas.
Página: 12/13
Base de datos
Ejercicio 9
Página: 13/13