PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Fonctions d'agrégation de la première et de la dernière valeur dans postgresql qui fonctionnent correctement avec les valeurs NULL

Vous pouvez utiliser les fonctions de fenêtre lead() et lag() pour vérifier le premier et le dernier enregistrement, par exemple :

select
    max(a.id) as id,
    max(a.first) as first,
    max(a.last) as last
from (
    select
         v.id,
         case when lag(v.id) over(order by v.id, p.install_date) is null then p.install_date end as first,
         case when lead(v.id) over(order by v.id, p.install_date) is null then p.remove_date end as last
    from vehicle v 
       left join period p on (v.id = p.car_id) 
    where v.id = 1 
) as a

démo de violon SQL