Untitled

mail@pastecode.io avatar
unknown
mysql
7 months ago
4.4 kB
3
Indexable
Never
-- clic derecho 'set as default schema' antes de trabajar con la bd 'sakila' en mysql workbench,
-- ctrl+shift+a sobre el título de la bd a trabajar con otras herramientas para el mismo fin, o...
use	sakila
;
-- 1.	muestra el título y la descripción de todas las películas que pertenecen a
-- la categoría "action".
select	  title
		  as pelicula,
		  description
		  as descripcion
from	  film
left join category
on		  category.category_id = film.film_id
where	  category.name		   = "action"
;
-- 2.	muestra el nombre del actor y el título de las películas en las que han participado,
-- ordenadas por nombre del actor de forma ascendente.
select	 first_name
		 as nombre_actor,
		 last_name
		 as apellido_actor,
		 title
		 as pelicula
from	 actor
join	 film_actor
on		 film_actor.actor_id = actor.actor_id
join	 film
on		 film.film_id        = film_actor.film_id
order by nombre_actor
asc
limit	 5464
;
-- 3.	muestra el nombre del cliente y la cantidad de películas distintas que ha alquilado.
select	 first_name
		 as nombre_cliente,
		 count(rental.rental_id)
		 as pelicula_arrendada
from	 customer
join	 rental
on		 rental.customer_id = customer.customer_id
group by first_name
order by pelicula_arrendada
desc
;
-- 4.	muestra el título de las películas y el nombre del director para las películas que
-- fueron lanzadas antes de 2000.
-- 5.  muestra el nombre del cliente, la cantidad total de dinero gastado en alquiler y
-- la cantidad total de películas alquiladas, ordenados por total de dinero gastado
-- de forma descendente.
select	 first_name
		 as nombre_cliente,
		 count(rental.rental_id)
		 as cantidad_rentas,
		 sum(payment.amount)
		 as pagado
from	 customer
join	 rental 
on		 rental.customer_id  = customer.customer_id
join	 payment
on		 payment.rental_id   = rental.rental_id
and		 payment.customer_id = customer.customer_id
group by nombre_cliente
order by pagado
desc
;
-- 6.	muestra el título de las películas y el nombre del actor principal para las películas
-- que contienen la palabra "adventure" en la descripción.
select title
	   as pelicula,
	   first_name
	   as nombre_actor
from   film
join   film_actor
on	   film.film_id   = film_actor.film_id
join   actor
on	   actor.actor_id = film_actor.actor_id
where  description
like   '%adventure%'
;
-- 7.	muestra el nombre del cliente y la fecha de alquiler de todas las películas
-- alquiladas el 1 de enero de 2006.
select first_name
	   as nombre_cliente,
	   rental_date
	   as fecha_arriendo
from   rental
join   customer
on	   customer.customer_id	  = rental.customer_id
join   inventory
on	   inventory.inventory_id = rental.inventory_id
where  rental_date
like   '2006-01-01%'
;
-- 8.	muestra el título de las películas y el nombre del actor principal para las películas
-- que no tienen un actor principal definido.
select	   title
		   as pelicula,
		   first_name
		   as nombre_actor,
		   last_name
		   as apellido_actor
from	   film
join	   film_actor
on		   film_actor.film_id = film.film_id
right join actor
on		   actor.actor_id	  = film_actor.actor_id
order by   pelicula
asc
limit	   5464
;
-- 9.	muestra el nombre del actor y el título de las películas en las que han participado
-- más de una vez.
select	 first_name
		 as nombre_actor,
		 last_name
		 as apellido_actor,
		 title
		 as pelicula,
		 count(film.title)
		 as apariciones
from	 actor
join	 film_actor
on		 film_actor.actor_id = actor.actor_id
join	 film
on		 film.film_id		 = film_actor.film_id
group by nombre_actor,
		 apellido_actor,
		 pelicula
having	 apariciones		 > 1
order by apariciones
desc
;
-- 10.	muestra el título de las películas y el nombre del cliente que
-- las alquiló más recientemente.
select	 title
		 as pelicula,
		 first_name
		 as nombre_cliente,
		 last_name
		 as apellido_cliente,
		 rental_date
		 as fecha_arriendo
from	 film
join	 customer
on		 customer.customer_id = film.film_id
join	 rental
on		 rental.rental_id	  = film.film_id
order by fecha_arriendo
desc
;
-- bonus.	todas las películas en las que ha aparecido cada actor.
select	 actor.first_name
		 as nombre_actor,
		 actor.last_name
		 as apellido_actor,
		 film.title
		 as pelicula
from	 actor
join	 film_actor
on		 film_actor.actor_id = actor.actor_id
join	 film
on		 film.film_id		 = film_actor.film_id
group by nombre_actor,
		 apellido_actor,
		 pelicula
order by nombre_actor
asc
limit	 5462
;
Leave a Comment