Debería experimentar con configuraciones más altas de work_mem
hasta que obtenga una ordenación en memoria. Por supuesto, solo puede ser generoso con la memoria si su máquina tiene suficiente.
Lo que haría que su consulta fuera mucho más rápida es si almacena datos agregados previamente, ya sea utilizando una vista materializada o una segunda tabla y un disparador en su tabla original que mantiene actualizadas las sumas en la otra tabla. No sé si eso es posible con tus datos, ya que no sé qué hll_cardinality
y hll_union_agg
son.