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

PostgreSQLのlast_valueはnullを無視します

    必要なのはlag(ignore nulls) 。これは、2つのウィンドウ関数を使用して必要なことを行う1つの方法です。 1つ目は、NULLのグループ化を定義します 値と2番目の値を割り当てます:

    select idx, value, coalesce(value, max(value) over (partition by grp))
    from (select b.*, count(value) over (order by idx) as grp
          from base b
         ) b
    order by idx;
    

    配列を使用して、サブクエリなしでこれを行うこともできます。基本的に、NULLを数えない最後の要素を取ります s:

    select idx, value, 
           (array_remove(array_agg(value) over (order by idx), null))[count(value) over (order by idx)]
    from base b
    order by idx;
    

    こちら はdb<>フィドルです。



    1. 外部キーとインデックスの問題

    2. OracleSQLLoaderのマッピングフィールド

    3. 最初の行に参加する方法

    4. php --laravel:データベースで重複する時間を処理する方法は?