Si prega di pubblicare la domanda con dati di esempio, il che rende facile il test e la risposta corretta.
Nel tuo codice a1
è il nome della tabella derivata non il nome della colonna.
Le funzioni aggregate accettano il parametro in termini di nome della colonna.
Prova quanto segue:
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;