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

PostgreSQL:タイムズリークエリのNULL値を以前の値で埋めます

    次の方法の方が簡単だと思いました:

    指定されたデータサンプルを作成します:

    WITH example (date,close) AS 
    (VALUES 
        ('12:00:00',3),
        ('12:00:01',4),
        ('12:00:02',5),
        ('12:00:03',NULL),
        ('12:00:04',NULL), 
        ('12:00:05',3)
    ) 
    SELECT * INTO temporary table market_summary FROM example;
    

    NULL値を前に入力した値で入力するためのクエリ

    select 
        date, 
        close, 
        first_value(close) over (partition by grp_close) as corrected_close
    from (
          select date, close,
                 sum(case when close is not null then 1 end) over (order by date) as grp_close
          from   market_summary
    ) t
    

    戻る

    date      | close | corrected_close
    -----------------------------------
    12:00:00  | 3     | 3
    12:01:00  | 4     | 4
    12:02:00  | 5     | 5
    12:03:00  | NULL  | 5
    12:04:00  | NULL  | 5
    12:05:00  | 3     | 3
    
    • 閉じる:既存の値
    • corrected_close:修正された値


    1. 条件のみが満たされている場合にSQL構文を使用してMySQLテーブルから最後のレコードを選択する方法

    2. MIN/MAXとORDERBYおよびLIMIT

    3. RODBCクエリがデータを返さない

    4. 複数回挿入する前に値をチェックするためのMySQLトリガー