SELECT JSON_ARRAYAGG(category_result) AS films_by_category
FROM (
SELECT JSON_OBJECT(c.name, COUNT(f.film_id)) AS category_result
FROM category c
JOIN film_category fc ON c.category_id = fc.category_id
JOIN film f ON fc.film_id = f.film_id
GROUP BY c.category_id
) AS sub;
-- Используйте агрегатную функцию JSON_ARRAYAGG и функцию JSON_OBJECT.