Utilice DISTINCT ON
:
SELECT DISTINCT ON (contenthash)
id,
contenthash,
filesize,
to_timestamp(timecreated) :: DATE
FROM mdl_files
ORDER BY contenthash, timecreated, id;
DISTINCT ON
es una extensión de Postgres que se asegura de devolver una fila para cada combinación única de las claves entre paréntesis. La fila específica es la primera que se encuentra según el order by
cláusula.