У вас правильный синтаксис:
WITH AuthorRating(AuthorName, AuthorRating) AS
SELECT aname AS AuthorName,
AVG(quantity) AS AuthorRating
FROM Book
GROUP By Book.aname
Однако, как уже упоминали другие, MySQL не поддерживает эту команду. WITH был добавлен в SQL: 1999; самая новая версия стандарта SQL - SQL: 2008. Вы можете найти дополнительную информацию о базах данных, поддерживающих различные функции SQL: 1999, в Wikipedia .
MySQL традиционно немного отстает в поддержке стандарта SQL, тогда как коммерческие базы данных, такие как Oracle, SQL Server (в последнее время) и DB2, следуют им чуть более внимательно. PostgreSQL, как правило, также достаточно совместим со стандартами.
Вы можете посмотреть на дорожную карту MySQL; Я не совсем уверен, когда эта функция может поддерживаться, но она отлично подходит для создания читаемых сводных запросов.