SELECT
movies.id,
movies.title,
directors.name AS director,
genres.name AS genre,
COALESCE(ROUND(AVG(reviews.rating), 0), 0) AS rating,
COUNT(reviews.movie_id) AS reviews
FROM
movies
LEFT JOIN directors ON movies.director_id = directors.id
LEFT JOIN genres ON movies.genre_id = genres.id
LEFT JOIN reviews ON movies.id = reviews.movie_id
WHERE
movies.id % 2 = 0
GROUP BY
movies.id
ORDER BY
movies.id DESC;
LEFT JOIN перемещены до WHERE-условия, так как JOIN должен происходить перед фильтрацией записей.
Использован COALESCE для упрощения логики присваивания нулевого значения среднему рейтингу, когда отзывов нет. COALESCE возвращает первое ненулевое значение из списка его аргументов, что удобно для задачи присвоения рейтинга 0, если рейтинг не был рассчитан (AVG(reviews.rating) вернет NULL, если отзывов нет).
Условие
movies.id % 2 = 0 для выбора каждого второго фильма корректно размещено в WHERE.
Также ваш запрос должен вернуть средний рейтинг каждого фильма основанный на отзывах в таблице reviews, если у фильма нет отзывов (с рейтингом) тогда рейтинг для такого фильма должно быть равно 0.
Результат должен быть отсортирован по полю id из таблицы movies в порядке убывания.
Для округления среднего рейтинга используйте функцию ROUND
SELECT id,
title,
directors.name as director,
genres.name as genre,
IF ((ROUND(AVG(reviews.rating),0)) IS NULL, 0,(ROUND(AVG(reviews.rating),0))) AS rating,
COUNT(reviews.movie_id) AS reviews
FROM movies
WHERE ID % 2 = 0
LEFT JOIN reviews
ON movies.id = reviews.movie_id
LEFT JOIN directors
ON movies.director_id = directors.id
LEFT JOIN genres
ON movies.genre_id = genres.id
GROUP BY movies.id
ORDER BY movies.id DESC;