Как правильно сделать запрос по mysql агрегации? нужно вывести самый популярный жанр для каждого актера

Таблицы я соединил, кое-как сделал запрос , но по одному актеру и криво выводит, а надо имя актера и самый популярный жанр.

SELECT distinct a.NAME, g.NAME , count(*) as cnt FROM genre g 
INNER JOIN movie_genre mg ON g.ID=mg.GENRE_ID
INNER JOIN movie m ON m.ID=mg.MOVIE_ID
INNER JOIN movie_actor ma ON m.ID=ma.MOVIE_ID
INNER JOIN actor a ON ma.ACTOR_ID=a.ID
WHERE a.ID =1
GROUP BY g.NAME 
HAVING count(*) > 1;

структура базы выглядит так


Ответы (1 шт):

Автор решения: Виталий Злобин

Если для конкретного актёра, то можно так:

SELECT  a.NAME AS Actor,
        g.NAME AS Genre,
        COUNT(*) AS Cnt
FROM genre g 
JOIN movie_genre mg ON g.ID=mg.GENRE_ID
JOIN movie m        ON m.ID=mg.MOVIE_ID
JOIN movie_actor ma ON m.ID=ma.MOVIE_ID
JOIN actor a        ON ma.ACTOR_ID=a.ID
WHERE a.ID =1
GROUP BY a.NAME, g.NAME 
ORDER BY Сnt DESC
LIMIT 1
→ Ссылка