sql >> データベース >  >> RDS >> PostgreSQL

集計関数内の他の列(の最初の値)による個別の列値の順序付け

    事前に集計することで、明確にする必要がなくなります

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

    @Gordonの回答 良い点をもたらしました。それは他に必要な列がある場合です。この場合、distinct on 推奨されます

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


    1. nullの数が少ないものからnullがないものまでの列を使用して行を並べ替えます

    2. DatabaseError:タイプ文字が変化するには値が長すぎます(100)

    3. 奇妙な丸めの問題

    4. SQL Server:カスタム列名を使用したピボット