sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSQL last_value ignoruje hodnoty null

Co chcete, je lag(ignore nulls) . Zde je jeden způsob, jak udělat to, co chcete, pomocí dvou funkcí okna. První definuje seskupení pro NULL hodnoty a druhý přiřadí hodnotu:

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;

Můžete to také provést bez poddotazů pomocí polí. V zásadě vezměte poslední prvek, který nepočítá 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;

Zde je db<>hudlík.



  1. Jak importovat více než 100 000 záznamů do databáze mysql?

  2. Objednat ve skupině podle?

  3. AWS Python Lambda s Oracle - Generování OID se nezdařilo ani po přidání HOSTALIASŮ

  4. Standardní řetězce formátu data/času Podporovány FORMAT() na serveru SQL Server