No momento, não está claro o que você deseja que o Postgres retorne. Você diz que deve ser encomendado por
persons.updated_at
mas você não recupera esse campo do banco de dados. Acho que o que você quer fazer é:
SELECT date(updated_at), count(updated_at) as total_count
FROM "persons"
WHERE ("persons"."updated_at" BETWEEN '2012-10-17 00:00:00.000000' AND '2012-11-07 12:25:04.082224')
GROUP BY date(updated_at)
ORDER BY count(updated_at) DESC -- this line changed!
Agora você está dizendo explicitamente ao banco de dados para classificar pelo valor resultante do COUNT-aggregate. Você também pode usar:
ORDER BY 2 DESC
, efetivamente dizendo ao banco de dados para classificar pela segunda coluna no conjunto de resultados. No entanto, prefiro declarar explicitamente a coluna para maior clareza. Observação que atualmente não consigo testar essa consulta, mas acho que isso deve funcionar.