GROUP BY
でエイリアス名を使用することはできません 句。その上:なぜサブクエリ?これにより、行がasofdateおよびcontractごとに1つに減るので、後でカウントすると asofdate/契約ペアごとに1のカウントを取得します。
select asofdate, contract, count(*) as mycount
from public.optionsdata
group by asofdate, contract
having count(*) > 1
order by mycount desc;