Optimización de Consultas SQL para Bases de Datos Relacionales
Enviado por Chuletator online y clasificado en Diseño e Ingeniería
Escrito el en
con un tamaño de 2,8 KB
Resolución de Consultas SQL para Gestión de Clientes y Películas
- Mostrar todas las poblaciones (sin repetir) en las que hay registrados clientes.
SELECT DISTINCT poblacion FROM clientes; - Obtener el número de películas cuyo precio sea mayor o igual a 10. Mostrar el resultado con el alias "Nº Películas caras".
SELECT COUNT(*) AS "Nº Películas caras" FROM peliculas WHERE precio >= 10; - Consultar todos los clientes cuyo nombre empiece con "m" y acabe con "s".
SELECT nombre FROM clientes WHERE nombre LIKE 'm%' AND nombre LIKE '%s'; - Obtener las tres películas más caras de la base de datos.
SELECT nombre FROM peliculas ORDER BY precio DESC LIMIT 3; - Obtener el número de clientes por población en aquellas localidades con más de 100 clientes. Utilizar el alias "Nº de clientes".
SELECT poblacion, COUNT(*) AS "Nº de clientes" FROM clientes GROUP BY poblacion HAVING COUNT(*) > 100; - Mostrar el nombre de las películas compradas por el cliente con DNI: 87654321X utilizando una subconsulta.
SELECT nombre FROM peliculas WHERE cod_pelicula IN (SELECT codigo_pelicula FROM compras WHERE dni_cliente = '87654321X'); - Mostrar el nombre de los clientes que han adquirido la película más cara mediante el uso de subconsultas anidadas.
SELECT nombre FROM clientes WHERE dni_cliente IN (SELECT dni_cliente FROM compras WHERE codigo_pelicula = (SELECT cod_pelicula FROM peliculas WHERE precio = (SELECT MAX(precio) FROM peliculas))); - Mostrar el nombre de todos los directores junto con el nombre de sus películas. Incluir directores sin películas asociadas (LEFT JOIN).
SELECT d.nombre, p.nombre FROM directores d LEFT JOIN peliculas p ON d.cod_director = p.codigo_director; - Obtener el número de películas compradas por cada cliente (nombre y DNI) residentes en Las Palmas o Tenerife. Mostrar solo aquellos con menos de 10 compras y ordenar de menor a mayor número de películas sin utilizar subconsultas.
SELECT c.nombre, c.dni_cliente, COUNT(co.codigo_pelicula) AS num_peliculas FROM clientes c JOIN compras co ON c.dni_cliente = co.dni_cliente WHERE c.poblacion IN ('Las Palmas','Tenerife') GROUP BY c.nombre, c.dni_cliente HAVING COUNT(co.codigo_pelicula) < 10 ORDER BY num_peliculas ASC;