sql >> Database >  >> RDS >> PostgreSQL

Selecteer alleen rijen waarvan een kolom is gewijzigd ten opzichte van de rijen ervoor, met een unieke ID

Dit is een gaps-and-island-probleem. U wilt het begin van elk eiland, dat u kunt identificeren door de status op de huidige rij te vergelijken met de status op het "vorige" record.

Hiervoor zijn vensterfuncties handig:

select t.*
from (
    select t.*, lag(status) over(partition by personID order by unixtime) lag_status
    from mytable t
) t
where lag_status is null or status <> lag_status



  1. Mysql heeft de max_user_connections-fout op de c#-website overschreden

  2. mySQL-query tussen twee datums en twee keer

  3. MySQL voorwaardelijk invoegen op duplicaat

  4. Dynamisch gegenereerde kolomkoppen in sql-query