前提・実現したいこと
PostgreSQLで時系列データを取り扱っているのですが、一部欠損値のあるデータが存在します。
この欠損値を補完するために、直近で欠損値がないレコードの値を補完させたいのですが、
どのようにすれば実現できるのかが分かりません・・・
どなたかわかる方いらっしゃいますでしょうか。
よろしくお願いいたします。
発生している問題・エラーメッセージ
--現在の出力結果 survey_date cig_code_curr "201904" 8888 "201905" [null] "201906" [null] "201907" 1833 "201908" [null] "201909" [null] "201910" [null] "201911" [null] "201912" [null] "202001" [null] --求めている出力結果 survey_date cig_code_curr "201904" 8888 "201905" 8888 "201906" 8888 "201907" 1833 "201908" 1833 "201909" 1833 "201910" 1833 "201911" 1833 "201912" 1833 "202001" 1833
該当のソースコード
PostgreSQL
1SELECT survey_date, cig_code_curr 2FROM single_source.test_table2;
試したこと
以下のコードの様にlag関数をうまく利用すれば値が更新されるかなと考えたのですが、うまくいかず・・・
PostgeSQL
1SELECT 2survey_date, 3 4--lag関数を使い、cig_code_currがNULLの場合、一つ上のレコード値を参照し更新 5CASE 6WHEN cig_code_curr IS NULL THEN lag(cig_code_curr, 1, 0) OVER (ORDER BY (survey_date)) 7END 8 9FROM single_source.test_table2; 10 11↓出力結果 12survey_date cig_code_curr 13"201904" 8888 14"201905" [null] 15"201906" [null] 16"201907" 1833 17"201908" [null] 18"201909" [null] 19"201910" [null] 20"201911" [null] 21"201912" [null] 22"202001" [null]
補足情報(FW/ツールのバージョンなど)
OS : windows10 64bit
PostgreSQL : "PostgreSQL 9.6.12 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.9.3, 64-bit"
回答1件
あなたの回答
tips
プレビュー