Ну, во-первых, он возвращает декартово произведение всех авторов ко всем книгам, независимо от того, написал ли этот автор эту книгу.
Вот как я написал бы запрос, чтобы получить результат, который, как вы говорите, вы хотите:
SELECT a.stage_name, COUNT(b.id)
FROM authors a
LEFT OUTER JOIN books b ON (a.id = b.author_id)
GROUP BY a.id;
Вам нужно научиться писать запросы на соединение, если вы используете SQL. Соединение - это SQL, что такое цикл для языков программирования приложений. То есть это фундаментальная программная конструкция, которую вам нужно знать.