Resolver consulta agrupada por pasos

-- Actores con mayor número de películas
-- Total de películas por actor

-- Primero me hago mi sentencia sql normal
select * from actor join film_actor on actor.actor_id=film_actor.actor_id
join film on film_actor.film_id=film.film_id;

-- Segundo paso: ¿Qué tengo que hacer, sumar,contar...?
-- En este caso voy a contar (COUNT)
select first_name,last_name, count(film.film_id) total from actor join film_actor on actor.actor_id=film_actor.actor_id
join film on film_actor.film_id=film.film_id;

-- Tercer paso: ¿Por qué valor agrupo?
-- Agrupamos por actor que es de quien queremos saber el número de películas
select first_name,last_name, count(film.film_id) total from actor join film_actor on actor.actor_id=film_actor.actor_id
join film on film_actor.film_id=film.film_id
group by actor.actor_id;

-- Cuarto paso: ¿Necesito ordenar por algo?
-- ordeno por cantidad de películas descendente
select first_name,last_name, count(film.film_id) total from actor join film_actor on actor.actor_id=film_actor.actor_id
join film on film_actor.film_id=film.film_id
group by actor.actor_id -- Siempre que tenemos joins el campo id puede estar en varias tablas, necesitamos indicarle la tabla que queremos
order by total desc;

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos