sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL:udfyld NULL-værdier i tidsserieforespørgsel med tidligere værdi

Jeg fandt følgende metode nemmere:

Opret det givne dataeksempel:

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;
 

Forespørgsel om at udfylde NULL-værdier med den forrige udfyldte værdi

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
 

Retur

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
  • luk:eksisterende værdi
  • corrected_close:korrigeret værdi


  1. 11 måder at finde dublerede rækker, mens du ignorerer den primære nøgle i SQLite

  2. Slet automatisk krydsdata sammen med DELETE af en post?

  3. INNER JOIN vs LEFT JOIN ydeevne i SQL Server

  4. Hvordan bruger man en underforespørgsel til dbtable-indstilling i jdbc-datakilden?