Ну ... в конце концов я решил сделать sql следующим образом:
$sql = "SELECT b2.*, b1.mark FROM (SELECT book_id, SUM(v.value) / COUNT(*) as mark FROM vote v GROUP BY v.book_id) as b1" .
" RIGHT JOIN" .
" (SELECT * FROM author_book ba JOIN book b ON ba.book_id=b.id WHERE ba.author_id = {$author->id}) as b2 ON b2.id=b1.book_id ORDER BY b1.mark DESC";
$rsm = new \Doctrine\ORM\Query\ResultSetMapping;
$rsm->addEntityResult('Project\Entity\Book', 'b');
$rsm->addFieldResult('b', 'id', 'id');
$rsm->addFieldResult('b', 'isbn', 'isbn');
$rsm->addFieldResult('b', 'title', 'title');
$rsm->addFieldResult('b', 'summary', 'summary');
$rsm->addFieldResult('b', 'pages', 'pages');
$rsm->addFieldResult('b', 'price', 'price');
$rsm->addFieldResult('b', 'published_at', 'published_at');
Может быть, кому-то это пригодится, ура.