Tienes la sintaxis correcta:
WITH AuthorRating(AuthorName, AuthorRating) AS
SELECT aname AS AuthorName,
AVG(quantity) AS AuthorRating
FROM Book
GROUP By Book.aname
Sin embargo, como han mencionado otros, MySQL no admite este comando. WITH se agregó en SQL: 1999; la versión más reciente del estándar SQL es SQL: 2008. Puede encontrar más información sobre las bases de datos que admiten las diversas funciones de SQL: 1999 en Wikipedia .
MySQL tradicionalmente se ha retrasado un poco en el soporte del estándar SQL, mientras que las bases de datos comerciales como Oracle, SQL Server (recientemente) y DB2 las han seguido un poco más de cerca. PostgreSQL también suele ser bastante compatible con los estándares.
Es posible que desee ver la hoja de ruta de MySQL; No estoy completamente seguro de cuándo se admitirá esta función, pero es excelente para crear consultas acumuladas legibles.