WITH film_rentals AS (
SELECT
f.title AS film_title,
COUNT(r.rental_id) AS rental_count
FROM
rental r
JOIN
inventory i ON r.inventory_id = i.inventory_id
JOIN
film f ON i.film_id = f.film_id
WHERE
YEAR(r.rental_date) = 2005
GROUP BY
f.title
),
ranked_films AS (
SELECT
film_title,
rental_count,
DENSE_RANK() OVER (ORDER BY rental_count DESC, film_title ASC) AS film_rank
FROM
film_rentals
)
SELECT
film_rank,
film_title
FROM
ranked_films
WHERE
film_rank <= 5
ORDER BY
film_rank,
film_title;