Soluciones ejercicios agrupados

-- Mostrar los clientes ordenados por gasto total descendente
-- Total de gasto por cliente

select customer.*, sum(amount) gasto 
from customer 
join payment on customer.customer_id=payment.customer_id
group by customer.customer_id
order by gasto desc;

-- Mostrar los países que tengan menos de 10 clientes (94)
-- country - city - address - customer
-- contar
-- agrupado por pais
select country, count(customer_id) clientes from country
join city on country.country_id=city.country_id
join address on city.city_id=address.city_id
join customer on address.address_id=customer.address_id
group by country.country_id
having clientes<10;

-- Mostrar las películas que tengan 3 categorías o más
-- film - film_category
-- contar
-- agrupo por film
select film.*,count(category_id) categorias from film
join film_category on film.film_id=film_category.film_id
group by film.film_id
having categorias>=3;

-- Mostrar los actores que han trabajado en más de 20 películas (181)
-- actor - film_actor
-- contar
-- agrupar por actor
select actor.*, count(film_id) peliculas from actor
join film_actor on actor.actor_id=film_actor.actor_id
group by actor.actor_id
having peliculas>20;

-- Mostrar los actores que han trabajado en 5 o más películas de acción (5)
-- actor - film_actor - film - film_category - category
-- contar
-- agrupar por actor
select actor.*, count(film.film_id) peliculas from actor
join film_actor using(actor_id)
join film using(film_id)
join film_category using(film_id)
join category using(category_id)
where name='Action'
group by actor.actor_id
having peliculas>=5;

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos