sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL-vensterfuncties Negeer null-waarden

Ik veronderstel dat je niet zomaar:

select
from tbl_x
window w as (partition by ID order by Date)
where col_a is null;

Zo niet, dan moet u wellicht:

select
Col_A,
Col_B,
case when Col_A is null
  then (select col_a
          from tbl_x x2
         where x2.id = x1.id
           and col_a is not null
           and x2.date < x1.date
      order by date desc
         limit 1)
  else Col_A
  end Col_A_Lag,
case when Col_B is null
  then (select col_b
          from tbl_x x2
         where x2.id = x1.id
           and col_b is not null
           and x2.date < x1.date
      order by date desc
         limit 1)
  else Col_B
  end Col_B_Lag
from tbl_x x1;

Met de juiste indexering zouden de prestaties waarschijnlijk behoorlijk goed zijn.

create index ... (id, date desc, col_b) where col_b is not null;



  1. Wat is het verschil tussen het gebruiken en inschakelen van tabeljoins in MySQL?

  2. MySQLi PHP:controleer of de SQL INSERT-query volledig is geslaagd met MySQLi

  3. PHP/MySQL Weergave van de tijd sinds de laatste keer inloggen van de gebruiker

  4. Hoe kan ik meerdere tabellen samenvoegen in symfony2?