No puede usar un nombre de alias en el GROUP BY
cláusula. Además:¿Por qué la subconsulta? Reduce las filas a una por fecha y contrato, por lo que si cuenta después obtienes un conteo de 1 por cada par de fecha/contrato.
select asofdate, contract, count(*) as mycount
from public.optionsdata
group by asofdate, contract
having count(*) > 1
order by mycount desc;