Beseitigen Sie die Notwendigkeit, eine Unterscheidung vorzunehmen, indem Sie vorab aggregieren
select string_agg(sometext, ' ' order by numval)
from (
select sometext, min(numval) as numval
from t
group by sometext
) s
@Gordons Antwort
brachte einen guten Punkt. Das heißt, wenn es andere benötigte Spalten gibt. In diesem Fall ein distinct on
wird empfohlen
select x, string_agg(sometext, ' ' order by numval)
from (
select distinct on (sometext) *
from t
order by sometext, numval
) s
group by x