PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

PostgreSQL last_value mengabaikan nol

Yang Anda inginkan adalah lag(ignore nulls) . Berikut adalah salah satu cara untuk melakukan apa yang Anda inginkan, menggunakan dua fungsi jendela. Yang pertama mendefinisikan pengelompokan untuk NULL nilai dan yang kedua memberikan nilai:

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;

Anda juga dapat melakukan ini tanpa subquery dengan menggunakan array. Pada dasarnya, ambil elemen terakhir tidak termasuk 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;

Di sini adalah db<>biola.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan nilai parameter untuk skema dan tabel di Postgresql

  2. Ecto Query - Tanggal + Interval Postgres + Interpolasi Kueri

  3. Mengacu pada alias kolom agregat pilih dalam klausa memiliki di Postgres

  4. cursor.execute(INSERT INTO im_entry.test (+entrym+) VALUES ('+p+');)

  5. kesalahan multiparameter dengan datetime_select