U kunt geen aliasnaam gebruiken in de GROUP BY
clausule. Trouwens:waarom de subquery? Het reduceert de rijen tot één per datum en contract, dus als je achteraf telt je krijgt een telling van 1 voor elk asofdate / contractpaar.
select asofdate, contract, count(*) as mycount
from public.optionsdata
group by asofdate, contract
having count(*) > 1
order by mycount desc;