PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL last_value игнорира нули

Това, което искате, е lag(ignore nulls) . Ето един начин да направите това, което искате, като използвате две функции на прозореца. Първият дефинира групирането за NULL стойности, а вторият присвоява стойността:

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;

Можете също да направите това без подзаявки, като използвате масиви. По принцип вземете последния елемент без да броите 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;

Тук е db<>цигулка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Експортиране на таблица от база данни на Postgres (на сървър) в csv файл (на локален) в java

  2. Heroku Postgres:psql:ФАТАЛНО:няма запис в pg_hba.conf за хост

  3. Кеширане в PostgreSQL

  4. правилен начин за стартиране/спиране на база данни на postgres pg_ctl или услуга postgres

  5. Zip файл в байтове Python 3