サンプルデータを使用して質問を投稿してください。テストと適切な回答が簡単になります。
コード内a1
は、列名ではなく、派生テーブルの名前です。
集計関数は、列名の観点からパラメーターを受け入れます。
次のことを試してください:
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;