Bitte posten Sie eine Frage mit Beispieldaten, das macht es einfach, sie zu testen und richtig zu beantworten.
In Ihrem Code a1
ist der Name der abgeleiteten Tabelle, nicht der Spaltenname.
Aggregatfunktionen akzeptieren den Parameter in Bezug auf den Spaltennamen.
Versuchen Sie Folgendes:
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;