Veuillez poster une question avec des exemples de données, ce qui facilite le test et la réponse appropriée.
Dans votre code a1
est le nom de la table dérivée et non le nom de la colonne.
Les fonctions d'agrégation acceptent le paramètre en termes de nom de colonne.
Essayez ce qui suit :
select max(av) - min(av) from
(
select avg(av1) av from
(
select avg(stars) av1
from rating join movie m using(mID)
where year < 1980
group by mID
) as av1
union
select avg(av2) av from
(
select avg(stars) av2
from rating join movie m using(mID)
where year > 1980
group by mID
) as av2
) as a1;