Alquileres por encima de la media
select title, amount from film join inventory using(film_id)
join rental using (inventory_id)
join payment using (rental_id)
where amount> (select avg(amount) from payment)
Clientes con más películas alquiladas que alguno de los que empiezan por ‘A’
select first_name,count(rental_id) total from
customer join rental using (customer_id)
group by first_name
having total> any (select count(rental_id) total from
customer join rental using (customer_id)
where first_name like 'a%'
group by first_name
)
Clientes con más películas alquiladas que todos los que empiezan por ‘A’
select first_name,count(rental_id) total from
customer join rental using (customer_id)
group by first_name
having total> all (select count(rental_id) total from
customer join rental using (customer_id)
where first_name like 'a%'
group by first_name
)
Actores con más películas que el actor de id 1
select first_name, count(film_id) total
from actor join film_actor using(actor_id)
group by actor_id
having total>(select count(film_id) from film_actor where actor_id=1)
Actores que trabajan en películas con rating ‘R’
select distinct first_name, last_name from actor join film_actor using(actor_id)
where film_id in
(SELECT film_id FROM sakila.film
where rating='R')
o
select distinct first_name, last_name from actor join film_actor using(actor_id)
join film using (film_id) where rating='R'
Actores que no han trabajado en películas con rating ‘R’
select distinct first_name, last_name from actor
where actor_id not in
(SELECT actor_id FROM film_actor join sakila.film using(film_id)
where rating='R')
Actores que no hayan trabajado en películas de acción
select * from actor where actor_id not in (
select actor_id from film_actor join film using(film_id)
join film_category using (film_id)
join category using(category_id)
where name='ACTION'
)
Actores que no hayan trabajado en películas de rating ‘R’ con exists
select distinct first_name, last_name from actor a
where not exists
(SELECT film_id FROM sakila.film join film_actor fa using(film_id)
where rating='R' and a.actor_id=fa.actor_id)
Eliminar actores que no hayan trabajado en películas de rating ‘R’
delete from actor
where not exists
(SELECT film_id FROM sakila.film join film_actor fa using(film_id)
where rating='R' and actor.actor_id=fa.actor_id);
delete from actor
where actor_id in
(select actor_id
from film_actor join film using(film_id)
where rating='R');
Clientes que no han alquilado películas de rating ‘R’
select * from customer where customer_id not in (
select customer_id from customer join rental using(customer_id)
join inventory using(inventory_id)
join film using(film_id)
where rating='R');
select * from customer where not exists(
select 1 from rental
join inventory using(inventory_id)
join film using(film_id)
where rating='R' and customer.customer_id=rental.customer_id)
Media de películas alquiladas por clientes:
select avg(total) from
(select first_name,count(rental_id) total from
customer join rental using (customer_id)
group by customer_id) ttt
Media de películas por categoría
select avg(total) media from
(select name, count(film_id) total
from category join film_category using (category_id)
group by category_id) tabla