sql >> Base de Datos >  >> RDS >> PostgreSQL

Ordenar valores de columna distintos por (primer valor de) otra columna en función agregada

Elimine la necesidad de hacer una diferenciación agregando previamente

select string_agg(sometext, ' ' order by numval)
from (
    select sometext, min(numval) as numval
    from t
    group by sometext
) s

Respuesta de @Gordon trajo un buen punto. Eso es si hay otras columnas necesarias. En este caso un distinct on se recomienda

select x, string_agg(sometext, ' ' order by numval)
from (
    select distinct on (sometext) *
    from t
    order by sometext, numval
) s
group by x