PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Ordnen unterschiedlicher Spaltenwerte nach (erster Wert von) einer anderen Spalte in der Aggregatfunktion

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