sql >> データベース >  >> RDS >> PostgreSQL

一意のIDを指定して、前の行から列が変更された行のみを選択します

    これはギャップと島の問題です。現在の行のステータスを「前の」レコードのステータスと比較することで識別できる、各島の開始が必要です。

    これにはウィンドウ関数が便利です:

    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. 静的クラスとシングルトンクラスのしくみ(データベース)

    2. MySQLで内部テーブルを宣言する方法は?

    3. ORACLE:LEFTJOINを使用するとマテリアライズドビューが機能しない

    4. mysqliページネーションをプリペアドステートメントページネーションに変換します