with
v1 as
(select
category_id
, film_id
, count(rental_id) as co
, rank() over(partition by category_id order by count(rental_id) desc) as ra
from film_category
join inventory using(film_id)
join rental using(inventory_id)
where year(rental_date) = 2005
group by category_id, film_id),
v2 as
(select
name
, category_id
, group_concat(title order by title separator ', ') as gr
from v1
join category using(category_id)
join film using(film_id)
where ra = 1
group by category_id)
select
name as category
, gr as most_rented_films
, co as rentals_count
from v2
join v1 using(categori_id)