PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

PostgreSQL:điền giá trị NULL trong truy vấn thời gian bằng giá trị trước đó

Tôi thấy phương pháp sau dễ dàng hơn:

Tạo mẫu dữ liệu đã cho:

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;

Truy vấn điền giá trị NULL với giá trị đã điền trước đó

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

Trả lại

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
  • đóng:giá trị hiện tại
  • fixed_close:giá trị đã sửa


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ký tự dòng mới của PostgreSQL

  2. Trường mô hình duy nhất trong Django và phân biệt chữ hoa chữ thường (postgres)

  3. So sánh Kho dữ liệu cho PostgreSQL - MVCC so với InnoDB

  4. Làm cách nào để sao lưu cơ sở dữ liệu PostgreSQL của tôi với Cron?

  5. Làm cách nào để Ngắt kết nối khỏi cơ sở dữ liệu và quay lại cơ sở dữ liệu mặc định trong PostgreSQL?