Você tem a sintaxe certa:
WITH AuthorRating(AuthorName, AuthorRating) AS
SELECT aname AS AuthorName,
AVG(quantity) AS AuthorRating
FROM Book
GROUP By Book.aname
No entanto, como outros mencionaram, o MySQL não oferece suporte a este comando. COM foi adicionado no SQL: 1999; a versão mais recente do padrão SQL é SQL: 2008. Você pode encontrar mais algumas informações sobre bancos de dados que suportam os vários recursos do SQL: 1999 na Wikipedia .
O MySQL tradicionalmente ficou um pouco atrasado no suporte ao padrão SQL, enquanto bancos de dados comerciais como Oracle, SQL Server (recentemente) e DB2 os seguiram um pouco mais de perto. PostgreSQL também é normalmente bastante compatível com os padrões.
Você pode querer dar uma olhada no roadmap do MySQL; Não tenho certeza de quando esse recurso pode ser compatível, mas é ótimo para criar consultas de roll-up legíveis.