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

Vyberte pouze řádky, u kterých byl sloupec změněn z řádků před ním, s jedinečným ID

To je problém mezer a ostrovů. Chcete začátek každého ostrova, který můžete identifikovat porovnáním stavu na aktuálním řádku se stavem na "předchozím" záznamu.

K tomu se hodí funkce okna:

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 Cluster (NDB) vs MySQL Replication (InnoDB) pro aplikace Rails 3:klady/zápory?

  2. Proč dochází k chybě, když odesílám více dotazů do mysqli_query?

  3. Rozdíl mezi VARCHAR2(10 CHAR) a NVARCHAR2(10)

  4. Vytvoření tabulky databáze v SQL, podivná chyba