sql >> Database teknologi >  >> RDS >> PostgreSQL

Vælg kun rækker, der har en kolonne ændret fra rækkerne før den, givet et unikt ID

Dette er et hul-og-ø-problem. Du vil have starten på hver ø, som du kan identificere ved at sammenligne status på den aktuelle række med status på den "forrige" post.

Vinduesfunktioner er nyttige til dette:

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. Hvordan man optimerer smerteligt langsom MySQL-forespørgsel, der finder korrelationer

  2. Hvad bruges '$$' til i PL/pgSQL

  3. Android SQLiteDB er ikke færdig med at tilføje værdier

  4. Databasestruktur til at holde statistik efter dag, uge, måned, år